У меня есть приложение Android, которое нужно время от времени просыпать в течение дня.
Чтобы сделать это, я использую AlarmManager для настройки PendingIntent и запускаю BroadcastReceiver. Затем этот BroadcastReceiver запускает действие, чтобы вывести пользовательский интерфейс на передний план.
Кажется, все вышеперечисленное работает, поскольку действие запускается правильно; но я бы хотел, чтобы BroadcastReceiver уведомил Activity, что она была запущена по тревоге (в отличие от запуска пользователем). Для этого я пытаюсь из метода onReceive () в BroadcastReceiver установить переменную в пакете дополнений намерения, таким образом:
Intent i = new Intent(context, MyActivity.class);
i.putExtra(wakeupKey, true);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
В методе onResume () моего Activity я затем проверяю существование этой логической переменной:
protected void onResume() {
super.onResume();
String wakeupKey = "blah";
if (getIntent()!=null && getIntent().getExtras()!=null)
Log.d("app", "onResume at " + System.currentTimeMillis() + ":" + getIntent().getExtras().getBoolean(wakeupKey));
else
Log.d("app", "onResume at " + System.currentTimeMillis() + ": null");
}
Вызов getIntent (). GetExtras () в onResume () всегда возвращает ноль - мне кажется, что я вообще не могу передать какие-либо дополнительные функции в этом комплекте.
Если я использую тот же метод для привязки дополнений к PendingIntent, который запускает BroadcastReceiver, тем не менее, дополнения проходят просто отлично.
Может ли кто-нибудь сказать мне, что отличает передачу пакета от BroadcastReceiver в Activity по сравнению с передачей пакета из Activity в BroadcastReceiver? Боюсь, что я могу сделать что-то совершенно очевидное неправильно ...