Я читал темы по этому вопросу, но все они касались запуска действия, когда экран заблокирован или когда он разблокирован. Однако мне нужно, чтобы моя программа запустила новое действие независимо от того, заблокирован экран или нет.
Я использую GPS и оповещения о близости, чтобы проверить, когда был достигнут пункт назначения.
Моя активность регистрирует ProximityAlertReceiver, так что:
private class ProximityAlertReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String key = LocationManager.KEY_PROXIMITY_ENTERING;
Boolean entering = intent.getBooleanExtra(key, false);
if (entering) {
System.out.println("You have entered the proximity area");
} else {
System.out.println("You have exited the proximity area");
}
Bundle bundle = intent.getExtras();
int status = bundle.getInt("status");
Intent i = new Intent();
i.setClass(context, MEcheScreen.class);
Bundle bundle1 = new Bundle();
bundle1.putInt("status", status);
i.putExtras(bundle1);
i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(i);
}
}
Итак, когда у меня срабатывает сигнал сближения, начинается новое действие.
Я использую метод public void onNewIntent(Intent newIntent) {}
для обработки при запуске нового действия.
Итак, проблема в том, что когда экран заблокирован и сработало предупреждение о близости, Intent в классе ProximityAlertReceiver не запускается.
Я попытался использовать менеджер ключей, чтобы отключить защиту ключей. Однако после того, как он был отключен, он возвращается к главному экрану программы, но действие все еще не началось, пока я не нажму кнопку или не коснусь экрана.