BroadcastReceiver не получает трансляцию тревоги - PullRequest
3 голосов
/ 30 марта 2010

У меня есть код, который устанавливает новый повторяющийся сигнал тревоги (на производстве я буду использовать неточный Repeating), но BroadCastReceiver, который я зарегистрировал для обработки, не вызывается.

Вот код, где я установил будильник:

newAlarmPeriod = 5000; // For debugging

Intent alarmIntent = new Intent(this, GroupsCheckAlarmReceiver.class);
PendingIntent sender = PendingIntent.getBroadcast(this, Constants.CHECK_ALARM_CODE,
                                                  alarmIntent, 0);

AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() 
                + newAlarmPeriod, newAlarmPeriod, sender);

Кажется, что он работает, и каждые пять секунд срабатывает и подает сигнал тревоги, как видно из вывода "adb shell dumpsys alarm":

DUMP OF SERVICE alarm:
Current Alarm Manager state:

  Realtime wakeup (now=1269941046923):
  RTC_WAKEUP #1: Alarm{43cbac58 type 0 android}
    type=0 when=1269997200000 repeatInterval=0 count=0
    operation=PendingIntent{43bb1738: PendingIntentRecord{43bb1248 android broadcastIntent}}
  RTC_WAKEUP #0: Alarm{43ce30e0 type 0 com.almarsoft.GroundhogReader}
    type=0 when=1269941049555 repeatInterval=5000 count=1
    operation=PendingIntent{43d990c8: PendingIntentRecord{43d49108 com.almarsoft.GroundhogReader broadcastIntent}}
  RTC #1: Alarm{43bfc250 type 1 android}
    type=1 when=1269993600000 repeatInterval=0 count=0
    operation=PendingIntent{43c5a618: PendingIntentRecord{43c4f048 android broadcastIntent}}
  RTC #0: Alarm{43d67dd8 type 1 android}
    type=1 when=1269941100000 repeatInterval=0 count=0
    operation=PendingIntent{43c4e0f0: PendingIntentRecord{43c4f6c8 android broadcastIntent}}

  Broadcast ref count: 0

  Alarm Stats:
  android
    24390ms running, 0 wakeups
    80 alarms: act=android.intent.action.TIME_TICK flg=0x40000004
  com.almarsoft.GroundhogReader
    26ms running, 2 wakeups
    2 alarms: flg=0x4 cmp=com.almarsoft.GroundhogReader/.GroupsCheckAlarmReceiver

Но по какой-то причине мой BroadCastReceiver не вызывается при срабатывании тревоги. Я объявил это в Манифесте:

<receiver android:name=".GroupsCheckAlarmReceiver" />

А это сокращенный код:

public class GroupsCheckAlarmReceiver extends BroadcastReceiver{
  @Override
  public void onReceive(Context context, Intent intent) {
     Toast.makeText(context, "XXX Alarm worked.", Toast.LENGTH_LONG).show();
     Log.d("XXX", "GroupsCheckAlarmReceiver.onReceive");
  }

Ответы [ 2 ]

2 голосов
/ 30 марта 2010

Я нашел проблему, и это была довольно глупая ошибка. Тег <receiver> находился внутри <manifest>, но вне тегов <application>. Спасибо за ваше время, ребята.

0 голосов
/ 30 марта 2010

Вы пытались явно установить атрибут 'enabled' на флаге получателя манифеста в true? Я не могу найти ничего в документации, где указано значение по умолчанию, если оно не указано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...