Широковещательный приемник не получает сработавший сигнал тревоги - PullRequest
1 голос
/ 06 октября 2011

У меня следующая проблема.У меня есть 2 класса.1 называется AlarmService, а другой - TimeAlarm, который расширяет BroadcastReceiver.Приложение должно сделать следующее: оно должно генерировать новый сигнал тревоги на время, указанное в настройках (что оно уже делает ...), также в Logcat, я могу видеть, как срабатывает сигнал тревоги.Но проблема в том, что уведомление, которое должно отображаться, не отображается на панели состояния.

Вот весь код, который у меня есть для этого:

AndroidManifest.xml:

<receiver android:name="com.ikalma.alarmmanager.TimeAlarm">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>

AlarmService.java:

private Context context;
private PendingIntent mAlarmSender;

public AlarmService(Context context) {
    this.context = context;
    Intent notifyIntent = new Intent(Intent.ACTION_MAIN);
    notifyIntent.setClass(context, myActivity.class);
    mAlarmSender = PendingIntent.getBroadcast(context, 0, notifyIntent, 0);
}

public void startAlarm(int stunde, int minute) {
    Calendar updateTime = Calendar.getInstance();

    updateTime.set(Calendar.HOUR_OF_DAY, stunde);
    updateTime.set(Calendar.MINUTE, minute);
    updateTime.set(Calendar.SECOND, 00);

    AlarmManager am = (AlarmManager) context
            .getSystemService(Context.ALARM_SERVICE);
    am.setRepeating(AlarmManager.RTC_WAKEUP, updateTime.getTimeInMillis(),
            AlarmManager.INTERVAL_DAY, mAlarmSender);
}

TimeAlarm.java:

@Override
public void onReceive(Context context, Intent intent) {
    Log.e("TEST", "onReceive() called...");
}

Получатель в манифесте находится внутри тега, поэтому проблем не должно быть.Проблема в том, что если я перезагружаю свое устройство, оно вызывается.Но не в случае срабатывания будильника.Но метод onReceive () также следует вызывать, если срабатывает тревога, не так ли?

Спасибо за помощь!

1 Ответ

2 голосов
/ 06 октября 2011

ваш фильтр намерений только прослушивает завершенные намерения загрузки, а не ваше собственное действие по оповещению о тревоге.обновите свой фильтр намерений так, чтобы ваше широковещательное намерение также было получено (это означает, что для вашего особого случая добавьте действие Intent.ACTION_MAIN к вашему фильтру намерений)

<receiver android:name="com.ikalma.alarmmanager.TimeAlarm">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <action android:name="android.intent.action.MAIN" />
    </intent-filter>
</receiver>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...