отмена тревоги

1

Я новичок в программировании для Android и Java, и у меня есть приложение, которое запускает несколько аварийных сигналов и повторяет их каждый день. он работает нормально, но моя проблема в том, что когда я удаляю будильник, он продолжает стрелять на следующий день. они сказали мне использовать метод отмены, и я создал эту функцию:

public void deleteReminder(Long reminderId){
    Intent d = new Intent(mContext, Daily_OnAlarmReceiver.class);
    d.putExtra(RemindersDbAdapter.KEY_ROWID_DAILY, (long)reminderId);

    int Daily_requestCode = reminderId.intValue(); 


    PendingIntent pid = PendingIntent.getBroadcast(mContext, Daily_requestCode, d, PendingIntent.FLAG_CANCEL_CURRENT); 

    mAlarmManager.cancel(pid);
}

моя функция напоминания:

public void setReminder(Long reminderId, Calendar when) {

        Intent i = new Intent(mContext, Daily_OnAlarmReceiver.class);
        i.putExtra(RemindersDbAdapter.KEY_ROWID_DAILY, (long)reminderId); 
        int Daily_requestCode = reminderId.intValue(); 

        PendingIntent pi = PendingIntent.getBroadcast(mContext, Daily_requestCode, i, PendingIntent.FLAG_CANCEL_CURRENT); 
        mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, when.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);
}

оба они помещаются в файл AlarmManager.java.

следующий код находится в другом java файле, который удаляет сигнал только из списка, но он не мешает системе активировать будильник:

public boolean onContextItemSelected(MenuItem item) {
            switch(item.getItemId()) {
            case R.id.menu_delete:

            AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
               mDbHelper.deleteDailyReminder(info.id);
               fillData();
               return true;
        }
            return super.onContextItemSelected(item);
        }

мой вопрос в том, как назвать этот new Daily_ReminderManager(this).deleteReminder(mRowId); в предыдущем коде, поэтому напоминание будет удалено из списка и из диспетчера аварийных сообщений.

и мне интересно, правильный ли мой первый код

Теги:
alarm

1 ответ

0

Чтобы отменить будильник, Intents должны совпадать, как определено filterEquals(..).

Это означает, что действие, данные, тип, класс и категории намерений должны быть одинаковыми. Дополнительные данные не используются в этом сравнении.

  • 0
    как использовать filterEquals в моем случае?
  • 0
    Вы не Это то, что AlarmManager использует при сравнении намерений, чтобы отменить их.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню