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" />