РЕШЕНИЕ:
Зарегистрируйте ваш 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");
}
Не забудьте Отмените регистрацию получателя в вашем коде соответствующим образом, поскольку он действительно будет продолжать работать в фоновом режиме даже после того, как пользователь нажмет кнопку возврата или кнопку возврата домой.Единственный раз, когда он прекращает прием, это если пользователь убивает его с помощью кнопки многозадачности или принудительно останавливает его.