Я пытаюсь выяснить, как обнаружить изменение состояния Wi-Fi, когда мое приложение находится в фоновом режиме.
Чтобы дать краткое изложение моей проблемы.
В своей деятельности я регистрирую приемник OnStart () такой, что:
IntentFilter networkIntent = new IntentFilter();
networkIntent.addAction("android.net.conn.CONNECTIVITY_CHANGE");
networkIntent.addAction("android.net.wifi.WIFI_STATE_CHANGED");
registerReceiver(wifichangereceiver, networkIntent);
и затем я определяю свой wifichangereceiver fn:
public final BroadcastReceiver wifichangereceiver = new BroadcastReceiver() {
@Override
public void onReceive(final Context context, final Intent intent) {
final ConnectivityManager connMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
final android.net.NetworkInfo wifi = connMgr
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (wifi.isConnected()) {
isConnectedtoWifi = true;
if (MyCallisInConnectedState()) {
onNetworkStateChanged(true);
}
} else {
isConnectedtoWifi = false;
}
}
};
и я отменяю регистрацию в Onstop ():
unregisterReceiver(wifichangereceiver);
Однако этот механизм работает ТОЛЬКО в том случае, когда приложение находится на переднем плане, поскольку я сам регистрируюсь и отменяю регистрацию в своей деятельности. Есть ли более простой способ контролировать состояние Wi-Fi, когда вызов находится в фоновом режиме (или, возможно, хотя?) Я попытался добавить получателя в манифесте, но не уверен, что это правильный подход. Я хочу быть в состоянии сказать, когда мое состояние Wi-Fi меняется. Есть идеи?