如果你有一个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