Обнаружение КОГДА настройка местоположения становится доступной (например, для регистрации времени использования и т. Д.)? - PullRequest
0 голосов
/ 03 марта 2019

Android-Oreo по существу сломал мое приложение и оставил меня мертвым в воде ..

Моя цель: Запускать в фоновом режиме и реагировать, когда настройка «Местоположение» поворачиваетсяON.

Мне нужно , а не на самом деле использовать Местоположение - мне просто нужно определить, когда станет доступным.
(К сожалению, что касается Android-O, я больше не могу использовать фильтр намерений provider_changed для этого).

Как я могу это сделать?Совет будет принята с благодарностью!

1 Ответ

0 голосов
/ 04 марта 2019

РЕШЕНИЕ:
Зарегистрируйте ваш BroadcastReceiver динамически (из вашего кода), а не из манифеста. Кроме того, вместо проверки на жестко заданное регулярное выражение android.location.PROVIDERS_CHANGED, выследует использовать LocationManager.PROVIDERS_CHANGED_ACTION (и, конечно, импортировать LocationManager).

Пример:

public void buttonClick(View view) {

    IntentFilter filter = new IntentFilter();
    filter.addAction("android.location.PROVIDERS_CHANGED");

    BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().matches(LocationManager.PROVIDERS_CHANGED_ACTION)) {
                Log.i(TAG, "Action MATCHES LocationManager.PROVIDERS_CHANGED_ACTION!");
            }
        }
    };

    this.getApplicationContext().registerReceiver(receiver, filter);
    Log.i(TAG, "RECEIVER HAS BEEN REGISTERED");

}


Не забудьте Отмените регистрацию получателя в вашем коде соответствующим образом, поскольку он действительно будет продолжать работать в фоновом режиме даже после того, как пользователь нажмет кнопку возврата или кнопку возврата домой.Единственный раз, когда он прекращает прием, это если пользователь убивает его с помощью кнопки многозадачности или принудительно останавливает его.

...