我想在其他活动中取消并重新创建闹钟。我已经尝试了所有可能的东西,但它没有取消。
我这样开始提醒(在提醒活动中):
Intent alarmintent = new Intent(Reminder.this, AlarmReceiver.class);
alarmintent.putExtra("Subject", "a");
alarmintent.putExtra("Comments", "a");
int _receiverId = 0;
try {
Date dt = new SimpleDateFormat("yyyy-MM-dd hh:mm").parse(time);
_receiverId = (int) dt.getTime();
Log.i("current time millis", String.valueOf(_receiverId));
} catch (ParseException e) {
e.printStackTrace();
}
pIntent = PendingIntent.getBroadcast(this, _receiverId,
alarmintent, PendingIntent.FLAG_ONE_SHOT);
reminderAlarm = (AlarmManager) getSystemService(ALARM_SERVICE);
reminderAlarm.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pIntent);
尝试取消并在其他活动中重新创建:
Date date;
try {
date = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss").parse(editedTime);
_createId = (int) date.getTime();
Log.i("current time millis receiver", String.valueOf(_createId));
} catch (ParseException e1) {
e1.printStackTrace();
Log.e("Errors", e1.toString());
}
Intent alarmintent = new Intent(Reminder.getReminderContext(), AlarmReceiver.class);
alarmintent.putExtra("Subject", "a");
alarmintent.putExtra("Comments", "a");
PendingIntent pIntent = PendingIntent.getBroadcast(Reminder.getReminderContext(), _createId, alarmintent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager reminderAlarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
reminderAlarm.cancel(pIntent);
我确信两个pendingintent ID都是相同的,我正在取消线程内的警报。
我已用于取消闹钟的提醒类上下文已由THE HELP OF THIS ANSWER(#Raul Rene)
创建所有帮助和建议都很明显。
答案 0 :(得分:2)
经过多次实验后,我可以通过在适配器类中创建相同的PendingIntent来取消特定的AlarmManager。
我做了什么:我通过the answer of Raul Rene得到了活动背景。对于PendingIntent id,我已将闹钟时间转换为毫秒,并通过SharedPreferences
保存。我认为这是一个很好的方法来提醒Ids多个警报或待处理的内容。
最后,我成功地在接收器类中创建了pendingintent,如:
PendingIntent pIntent = PendingIntent.getBroadcast(
Reminder.getReminderContext(),
receiverId,alarmintent,PendingIntent.FLAG_UPDATE_CURRENT);
在Reminder课程中,我还创建了方法和PendingIntent,如:
//for the current context which is going to use in adapter or other class
private static Context mContext
public static Context getReminderContext() {
return Reminder.mContext;
}
//Reminder Activity PendingIntent
pIntent = PendingIntent.getBroadcast(Reminder.mContext, _receiverId,
alarmintent, PendingIntent.FLAG_UPDATE_CURRENT);
感谢David Wasser给了我一个很好的建议。 它的工作正常。