Я пытаюсь создать приложение, которое создает уведомление при изменении состояния Wi-Fi - PullRequest
1 голос
/ 27 марта 2019

Я создаю приложение, которое отправляет уведомление, когда соединение 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.

...