在代码中动态注册,不需要在AndroidManifest.xml里静态注册,静态注册在不打开App的情况下,有可以接收到广播。
public class MainActivity extends Activity {
private IntentFilter intentFilter;
private NetworkChangeReceiver networkChangeReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");//监听网络的状态;网络状态改变就会被调动。
networkChangeReceiver = new NetworkChangeReceiver();
registerReceiver(networkChangeReceiver, intentFilter);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(networkChangeReceiver);
}
}
创建NetworkChangeReceiver类继承BroadcaseReceiver
class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//枚举 enum NetworkStatus {DisConnect,Mobile,Wifi}
ConfigConstant.NetworkStatus status
=getConnectType();
switch(status){
case DisConnect:
break;
case Mobile:
break;
case Wifi:
break;
}
}
/*
*获取网络状态,
*/
private ConfigConstant.NetworkStatus getConnectType() {
ConnectivityManager connMgr =(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeInfo = connMgr.getActiveNetworkInfo();
if (activeInfo != null && activeInfo.isConnected()){
if (activeInfo.getType() == ConnectivityManager.TYPE_WIFI)
return ConfigConstant.NetworkStatus.Wifi;
else if (activeInfo.getType() == ConnectivityManager.TYPE_MOBILE)
return ConfigConstant.NetworkStatus.Mobile;
}
return ConfigConstant.NetworkStatus.DisConnect;
}
网络状态一旦发生改变,会调用NetworkChangeReceiver 的onReceive(),再去获取网络状态。
aaaa
动态注册广播接收器实现网络状态监听
本文介绍如何在Android应用中动态注册广播接收器,实现监听网络连接状态变化的功能,无需在AndroidManifest.xml中静态注册。通过创建NetworkChangeReceiver类并重写onReceive方法,获取当前网络状态,如断开、移动网络或Wi-Fi连接。

436

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



