Android 監聽網絡狀態發生變化

Android 監聽網絡狀態變化

通過網絡連接管理者獲取管理對象,使用ConnectivityManager中的getActiveNetworkInfo()方法獲取網絡連接的額外信息,調用isAvailable()和isConnected()方法判斷當前網絡是否可用,是否連接。

public class NetworkChangedReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        /***
         * 全局的網絡狀態變化監聽
         */
        if (intent.getAction()!=null && intent!=null){
            if (intent.getAction() == ConnectivityManager.CONNECTIVITY_ACTION) {
                /*判斷當前網絡時候可用以及網絡類型*/
                if (!isNetworkAvailable(context)) {
                    //無網絡狀態
                } else {
                   //有網絡狀態
                }
            }
        }
    }

    public boolean isNetworkAvailable(Context context) {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        
        NetworkInfo activeNetworkInfo = null;
        if (connectivityManager != null) {
            activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        }
        return activeNetworkInfo != null && activeNetworkInfo.isAvailable() && activeNetworkInfo.isConnected();
    }
}

千萬記得需要在Manifest.xml文件中註冊

 <receiver android:name=".NetworkChangedReceiver">
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
            </intent-filter>
        </receiver>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.INTERNET" />

本文僅記錄開發過程遇到的問題及解決方案,歡迎大家批評與指正!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章