一、首先获取监听网络权限
<!-- 获取网络状态-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
二、自定义广播接收器
/**
* 自定义检查手机网络状态是否切换的广播接受器
*
*/
public class NetBroadcastReceiver extends BroadcastReceiver {
public NetWorkEvevt evevt = NetWorkMonitorActivity.evevt;
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
int netWorkState = NetworkUtil.getNetWorkState(context);
evevt.onChange(netWorkState);
}
}
public interface NetWorkEvevt {
public void onChange(int netMobile);
}
}
三、获取手机目前网络状态
public static int getNetWorkState(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager
.getActiveNetworkInfo();
if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) {
if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_WIFI)) {
return NETWORK_WIFI;
} else if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_MOBILE)) {
return NETWORK_MOBILE;
}
} else {
return NETWORK_NONE;
}
return NETWORK_NONE;
}
四、在Activity中动态注册广播
IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(netreceiver, intentFilter);
注意:最好使用动态注册方式注册广播,清单文件中注册可能会失败。
最后在Activity 中实现广播注册器接口NetWorkEvevt中的onChange 方法,实时的监听网络变化。
本文介绍了一种通过自定义广播接收器来监听手机网络状态变化的方法,并提供了具体的实现步骤,包括获取网络权限、创建广播接收器、获取当前网络状态以及动态注册广播。
802

被折叠的 条评论
为什么被折叠?



