Я хотел бы уведомить мою активность о любых изменениях подключения Wi-Fi с помощью BroadcastReceiver. Поскольку эта трансляция находится внутри приложения, я пытаюсь использовать более эффективный объект LocalBroadcastManager.
Однако что бы я ни делал, метод BroadcastReceiver.onReceive() не срабатывает. Возможно, я подключил его неправильно, или, возможно, действие WifiManager.NETWORK_STATE_CHANGED_ACTION, которое я прослушиваю, не может быть зарегистрировано для LocalBroadcastManager? Любая помощь или разъяснение будут оценены.
Вот пример моего класса Activity, который содержит всю логику.
public class MyActivity extends ActionBarActivity {
private BroadcastReceiver wifiReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION))
{
// Do something
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
IntentFilter wifiStatusIntentFilter = new IntentFilter();
wifiStatusIntentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
wifiStatusIntentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
LocalBroadcastManager.getInstance(this).registerReceiver(wifiReceiver, wifiStatusIntentFilter);
}
protected void onPause() {
super.onPause();
LocalBroadcastManager.getInstance(this).unregisterReceiver(wifiReceiver);
}
protected void onResume() {
super.onResume();
IntentFilter wifiStatusIntentFilter = new IntentFilter();
wifiStatusIntentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
LocalBroadcastManager.getInstance(this).registerReceiver(wifiReceiver, wifiStatusIntentFilter);
}
}
Когда я включаю и выключаю Wi-Fi на своем мобильном телефоне или вхожу и выхожу из диапазона Wi-Fi, метод onReceive() никогда не запускается.