Я новичок в программировании для 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);
в предыдущем коде, поэтому напоминание будет удалено из списка и из диспетчера аварийных сообщений.
и мне интересно, правильный ли мой первый код
Чтобы отменить будильник, Intents
должны совпадать, как определено filterEquals(..)
.
Это означает, что действие, данные, тип, класс и категории намерений должны быть одинаковыми. Дополнительные данные не используются в этом сравнении.