1. 扩展BroadcastReceiver类,重写其onReceive方法,实现自己所需要的操作:
public class ConnectionChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
boolean isConnected = false;
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null) {
if(networkInfo.isConnected())
{
isConnected = true;
}
//Log.i(LOG_TAG, "--Network Type = " + networkInfo.getTypeName());
//Log.i(LOG_TAG, "--Network SubType = " + networkInfo.getSubtypeName());
//Log.i(LOG_TAG, "--Network State = " + networkInfo.getState());
}
String networkStatus = isConnected?"连接":"断开";
Toast.makeText(getApplicationContext(), "网络连接已"+networkStatus+",重新加载网口信息...", Toast.LENGTH_SHORT).show();
}
}
2. 在Activity加载时注册上一步自定义的类的实例给ConnectivityManager类的CONNECTIVITY_ACTION
private void registerNetStateReceiver() {
broadcastReceiver = new ConnectionChangeReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(android.net.ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(broadcastReceiver, filter);
}
其中broadcastReceiver为上一步自定义的ConnectionChangeReceiver类的实例,可以定义为Activity的私有成员变量。
3. 在AndroidManifest.xml文件中注册访问网络状态权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />