Android監聽網絡狀態,促發事件

最近想實現在網絡斷開時取得的數據存於sqlite,然後在網絡連接的時候將數據自動上傳。對於Android的聯網事件,首先要註冊Receiver<receiver
android:name="com.ray.ray.receiver.ConnectionChangeReceiver"
android:label="NetworkConnection" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>

網絡狀態發生變化的時候,系統會發出 android.net.conn.CONNECTIVITY_CHANGE 廣播

手機解鎖動作的時候,系統會發出android.intent.action.USER_PRESENT 廣播,我這裏爲了在解鎖手機時獲取到,所以添加上手機解鎖事件廣播。

註冊Receiver後,就可以在ConnctionChangeReceiver中接收到網絡狀態變化和手機解鎖動作的廣播

其次,我們處理接收到的廣播,實現方法如下,在onReceive中添加網絡狀態判斷

ConnectivityManager connectMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

ConnectivityManager 獲取當前系統服務信息
getNetworkInfo 分別獲取 類型爲MOBILE和WIFI兩種聯網方式的信息。

通過判斷mobNetInfo.isConnected() 和 wifiNetInfo.isConnected() 返回的Boolean 布爾值來確定當前聯網狀態。

if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {// unconnect network
} else {// connect network
}

這裏只添加了當前是否連接網絡,如果需要區分是數據還是WIFI連接,可以分別判斷。

這裏要注意,要添加訪問權限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

大體思路是這樣的,具體實現還需要進一步細化。
發佈了32 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章