使用情况:
确定当前是否有网络;
需要WiFi网络提示
使用方法:
public class NetworkConnectChangedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 这个监听wifi的打开与关闭,与wifi的连接无关 if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(intent.getAction())) { int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0); switch (wifiState) { case WifiManager.WIFI_STATE_DISABLED: ToastUtil.showToast("有可用WIFI"); break; case WifiManager.WIFI_STATE_DISABLING: break; case WifiManager.WIFI_STATE_ENABLING: break; case WifiManager.WIFI_STATE_ENABLED: ToastUtil.showToast("当前网络可用"); break; case WifiManager.WIFI_STATE_UNKNOWN: break; default: break; } } // 这个监听wifi的连接状态即是否连上了一个有效无线路由,当上边广播的状态是WifiManager // .WIFI_STATE_DISABLING,和WIFI_STATE_DISABLED的时候,根本不会接到这个广播。 // 在上边广播接到广播是WifiManager.WIFI_STATE_ENABLED状态的同时也会接到这个广播, // 当然刚打开wifi肯定还没有连接到有效的无线 if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(intent.getAction())) { Parcelable parcelableExtra = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); if (null != parcelableExtra) { NetworkInfo networkInfo = (NetworkInfo) parcelableExtra; NetworkInfo.State state = networkInfo.getState(); boolean isConnected = state == NetworkInfo.State.CONNECTED; if (isConnected) { ToastUtil.showToast("当前网络可用"); } else { ToastUtil.showToast("当前网络不可用"); } } } // 最好用的还是这个监听。Wifi/移动网打开,关闭,以及连接上可用的连接都会接到监听 // 这个广播的最大弊端是比上边两个广播的反应要慢,如果只是要监听wifi用上边两个配合比较合适 if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) { ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = manager.getActiveNetworkInfo(); if (activeNetwork != null) { if (activeNetwork.isConnected()) { if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) { ToastUtil.showToast("WiFi连接"); } else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) { ToastUtil.showToast("手机网络连接"); } } else { ToastUtil.showToast("无网络连接."); } } else { ToastUtil.showToast("无网络连接.."); } } } }
在项目的Base Activity中:
change = new NetworkConnectChangedReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); filter.addAction("android.net.wifi.WIFI_STATE_CHANGED"); filter.addAction("android.net.wifi.STATE_CHANGE"); registerReceiver(change, filter);
这就完成了对当前app联网状态的监听,如果联网状态发生改变,就会对应弹出土司提示用户;
这时候如果需要做更深一步的处理,就可以在对应的方法下进行;
另外对于这方面本人也不是很熟悉,但是有什么力所能及的请联系: 532245792 建涛