项目中提到这样的需求 在网上查找了一些资料 广播是很合适这个需求所以就选择了广播 遇到一些比较傻逼的问题也是自己太大意 希望能给遇到这个问题的人给点建议
声明
private ConnectivityManager mConnectivityManager; private NetworkInfo netInfo; private MyReceive mMyReceiver;创建内部类
class MyReceive extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) { mConnectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); netInfo = mConnectivityManager.getActiveNetworkInfo(); if(netInfo != null && netInfo.isAvailable()) { /////////////网络连接 String name = netInfo.getTypeName(); if(netInfo.getType()==ConnectivityManager.TYPE_WIFI){ /////WiFi网络 log_equipment_wifi.setChecked(true); ToastTools.show(context,"wifi"); Log.i("Long", "wifi"); }else if(netInfo.getType()==ConnectivityManager.TYPE_MOBILE){ /////////3g网络 log_equipment_gprs.setChecked(true); }else { } } else { log_equipment_wifi.setChecked(false); log_equipment_gprs.setChecked(false); } } }; }
多出用到的话可以提取出来
实例化调用
mMyReceiver =new MyReceive(); IntentFilter mFilter = new IntentFilter(); mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(mMyReceiver, mFilter);关闭
@Override protected void onDestroy() { super.onDestroy(); if(mMyReceiver!=null){ unregisterReceiver(mMyReceiver); } }刚开始直接把关闭广播写在调用下面 然后效果一直没出来 也是醉的不要不要的希望看到的人不要犯这个低级错误
最后不要忘了加权限 写上这些基本上就o啦
<!-- 网络权限 --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />