如果你有一個BroadcastReceiver類中聲明這樣:
public class NetConnectionBroadcastReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
final ConnectivityManager cm = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo == null)
Log.v("CONNECT", "NOT CONNECTED");
int netType = networkInfo.getType();
if (netType == ConnectivityManager.TYPE_WIFI)
{
Log.v("CONNECT", "CONNECTED TO WIFI");
}
else if (netType == ConnectivityManager.TYPE_MOBILE)
{
Log.v("CONNECT", "CONNECTED TO MOBILE" +
(networkInfo.isRoaming() ? " ROAMING!" : ""));
}
}
}
你可以存儲一個實例它insinde您的活動,並在onCreate
方法,你可以,如果爲android.net.conn.CONNECTIVITY_CHANGE
註冊事件:
private final NetConnectionBroadcastReceiver receiver =
new NetConnectionBroadcastReceiver();
public void onCreate(Bundle savedInstanceState)
{
// ... your onCreate implementation goes here
final IntentFilter intentFilter =
new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
this.registerReceiver(this.receiver, intentFilter);
}
當數據連接的變化,你會得到一個名爲接收機的onReceive
方法。你可以從內部檢查,發生了什麼樣的改變。
對於此項檢查,您不需要超過android.permission.ACCESS_NETWORK_STATE
權限。
很好的回答!做得好 。 – moujib