Android8.0 接收斷網(wǎng)廣播

當(dāng)我們在Android設(shè)備上關(guān)閉網(wǎng)絡(luò)連接時系統(tǒng)會發(fā)送網(wǎng)絡(luò)改變廣播,如下:


log.PNG
08-12 14:51:57.763 877-968/? D/ConnectivityService: sendStickyBroadcast: action=android.net.conn.CONNECTIVITY_CHANGE

actionandroid.net.conn.CONNECTIVITY_CHANGE,只要我們知道了這個Action就可以寫一個廣播接收器來接收網(wǎng)絡(luò)狀態(tài)的改變,并做出不同的處理邏輯,比如顯示一個斷網(wǎng)提示之類的什么的。

下面看下代碼

public class NetChangeReceiver extends BroadcastReceiver {

    @SuppressLint("UnsafeProtectedBroadcastReceiver")
    @Override
    public void onReceive(Context context, Intent intent) {
        try {
            ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
            if (networkInfo != null && networkInfo.isAvailable()) {
                //有網(wǎng)處理
            } else {
                //無網(wǎng)顯示個提示什么的
            }
        } catch (Exception e) {
            //ignore
        }
    }
}

然后在清單文件中注冊:

// 這里注意路徑,每個人寫的包名不一樣,須修改成自己的包名下的路徑
<receiver android:name=".receiver.NetChangeReceiver ">
        <intent-filter>
            <action
                android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
</receiver>

看起來完成了,在Android 5.1上試驗(yàn)也沒問題,但是在8.0上的手機(jī)出問題了,具然收不到廣播。What?

查了下,發(fā)現(xiàn),在Android8.0行為變更,大多數(shù)靜態(tài)注冊的廣播將接收不到,好吧。。。,將上述代碼修改成動態(tài)注冊的方式,測試,果然可以收到。

動態(tài)注冊代碼如下:

NetChangeReceiver receiver = new NetChangeReceiver ();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
mContext.registerReceiver(receiver, intentFilter);

這里使用的全局的Application,并沒有解注冊,大家注意根據(jù)需要實(shí)現(xiàn)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 謹(jǐn)以文章記錄學(xué)習(xí)歷程,如有錯誤還請指明。 前言 我們上學(xué)時都有過這樣的經(jīng)歷,當(dāng)我們在火車站列車候車室中等待時,每當(dāng)...
    whd_Alive閱讀 7,837評論 2 13
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,954評論 25 709
  • 在一個IP網(wǎng)絡(luò)范圍中,最大的ip地址是被保留用作廣播地址來使用的,比如某個IP范圍是192.168.0.xxx,子...
    小徐andorid閱讀 1,584評論 0 1
  • 我沒有改變,是因?yàn)閮?nèi)心對現(xiàn)在的依賴,我還怕改變讓自己看到自己的不堪。
    妖樹閱讀 259評論 0 0

友情鏈接更多精彩內(nèi)容