網(wǎng)絡(luò)變化android自帶廣播、采用廣播接收器接收網(wǎng)絡(luò)變化的監(jiān)聽
自定義廣播接收
public class NetworkInfoBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = "NetworkInfoBroadcastRec";
@Override
public void onReceive(Context context, Intent intent) {
String state = intent.getAction();
if (!TextUtils.isEmpty(state)) {
//wifi的轉(zhuǎn)態(tài)監(jiān)聽
if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(state)) {
int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0);
switch (wifiState) {
case WifiManager.WIFI_STATE_DISABLED:
Log.e(TAG, "已禁用Wi-Fi");
break;
case WifiManager.WIFI_STATE_DISABLING:
Log.e(TAG, "已啟用Wi-Fi");
break;
}
}
//網(wǎng)絡(luò)監(jiān)聽
if (ConnectivityManager.CONNECTIVITY_ACTION.equals(state)) {
Log.e(TAG, "網(wǎng)絡(luò)連接已發(fā)生更改 ");
//獲取聯(lián)網(wǎng)狀態(tài)的NetworkInfo對象
ConnectivityManager manager = (ConnectivityManager) MyApplication.getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
@SuppressLint("MissingPermission") NetworkInfo info = manager.getActiveNetworkInfo();
if (info != null && info.isAvailable()) {
int type = info.getType();
switch (type) {
case 0://移動網(wǎng)絡(luò)
Log.e(TAG, "移動網(wǎng)絡(luò)");
break;
case 1://wifi
Log.e(TAG, "wifi");
break;
default:
break;
}
} else {
Log.e(TAG, "無網(wǎng)絡(luò)");
}
}
}
}
}
為了方便全局監(jiān)聽在baseactivity中注冊
public class BaseActivity extends AppCompatActivity {
NetworkInfoBroadcastReceiver receiver = new NetworkInfoBroadcastReceiver();
@Override
protected void onResume() {
super.onResume();
Register();
}
@Override
protected void onPause() {
super.onPause();
if (receiver != null) {
unregisterReceiver(receiver);
receiver = null;
}
}
private void Register() {
//這里我只添加了wifi姿態(tài)和網(wǎng)絡(luò)變化的廣播实夹、還有一些其他的網(wǎng)絡(luò)的廣播可以自行添加
IntentFilter filter = new IntentFilter();
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(receiver, filter);
}
}