Android 監(jiān)聽網(wǎng)絡(luò)狀態(tài)+源代碼
網(wǎng)絡(luò)狀態(tài)發(fā)生變化的時候,系統(tǒng)會發(fā)出 android.net.conn.CONNECTIVITY_CHANGE 廣播
手機(jī)解鎖動作的時候,系統(tǒng)會發(fā)出android.intent.action.USER_PRESENT 廣播,我這里為了在解鎖手機(jī)時獲取到,所以添加上手機(jī)解鎖事件廣播。
注冊Receiver后,就可以在ConnctionChangeReceiver中接收到網(wǎng)絡(luò)狀態(tài)變化和手機(jī)解鎖動作的廣播
其次,我們處理接收到的廣播,實現(xiàn)方法如下,在onReceive中添加網(wǎng)絡(luò)狀態(tài)判斷
- ConnectivityManager connectMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
- NetworkInfo mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
- NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
ConnectivityManager 獲取當(dāng)前系統(tǒng)服務(wù)信息
getNetworkInfo 分別獲取 類型為MOBILE和WIFI兩種聯(lián)網(wǎng)方式的信息。
通過判斷mobNetInfo.isConnected() 和 wifiNetInfo.isConnected() 返回的Boolean 布爾值來確定當(dāng)前聯(lián)網(wǎng)狀態(tài)。
- if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {// unconnect network
- } else {// connect network
- }
這里只添加了當(dāng)前是否連接網(wǎng)絡(luò),如果需要區(qū)分是數(shù)據(jù)還是WIFI連接,可以分別判斷。
這里要注意,添加Android permission訪問權(quán)限http://mobile.51cto.com/aprogram-386433.htm
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
以上就是Android 監(jiān)聽網(wǎng)絡(luò)狀態(tài)的代碼實現(xiàn)過程。