Я создаю приложение, которое отправляет уведомление, когда соединение Wi-Fi установлено. Поскольку я использую Android 9, настройка фильтра намерений в AndroidManifest.xml не работает.
Я создал пользовательский BroadcastReceiver, который создает уведомление, и он работает, если я регистрирую получателя в onCreate.
Вот часть кода registerReceiver в onCreate (работает при открытии приложения)
receiver = new WifiStateReceiver();
IntentFilter filter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION);
registerReceiver(receiver, filter);
Вот мой BroadcastReceiver:
public class WifiStateReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("TEST", "IT WORKS!");
}
}
А вот и мой AndroidManifest.xml
.
.
.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
.
.
.
<receiver
android:name=".WifiStateReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.net.wifi.STATE_CHANGE"/>
</intent-filter>
</receiver>
.
.
.
После закрытия приложения это больше не работает. Поэтому мне нужен какой-то сервис, который никогда не закрывается, но я не уверен, насколько неэффективен этот метод. Есть ли способ запустить сервис при изменении wifi-соединения / состояния? И, как я уже сказал, установка интент-фильтра в AndroidManifest не работает, поскольку я использую Android 9.