警报管理器和未决意图取消不起作用
Alarm Manager and Pending Intent Cancel Not Working
我从 Activity 安排闹钟。
private AlarmManager mAlarmManager;
mAlarmManager = (AlarmManager) ACT_ActiveSession.getAppContext()
.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(mContext, LocalNotification.class);
intent.putExtra("alertBody", "");
intent.putExtra(K.SESSIONID, "");
intent.putExtra("TIME", "");
intent.putExtra("BATCHNO","");
intent.putExtra("REQUEST_CODE", "");
PendingIntent pendingIntent = PendingIntent.getBroadcast(
ACT_ActiveSession.getAppContext(), REQUEST_CODE, intent, 0);
mAlarmManager.setExact(AlarmManager.RTC_WAKEUP, finishTime,
pendingIntent);
// alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, finishTime,
// (1 * 1000), pendingIntent);
intent.putExtra("","");
仅用于 BroadcastReceiver
上的某些任务
并从片段取消警报
private AlarmManager mAlarmManager;
mAlarmManager = (AlarmManager) mActivity
.getSystemService(Context.ALARM_SERVICE);
Intent updateServiceIntent = new Intent(mActivity,
ACT_Home.class);
PendingIntent pendingUpdateIntent = PendingIntent.getBroadcast(
mActivity, REQUEST_CODE,
updateServiceIntent, 0);
pendingUpdateIntent.cancel();
// Cancel alarms
if (pendingUpdateIntent != null) {
mAlarmManager.cancel(pendingUpdateIntent);
Log.e("", "alaram canceled ");
} else {
Log.e("", "pendingUpdateIntent is null");
}
但是警报管理器没有被取消。
这里我更改了mActivity
= MyActivity
的static getApplicationContext();
并且还更改了不同的Flags和不同的Context.
我也参考了很多答案。 但是任何代码都不起作用。 Link1 Link2 Link3
请尽快给我解决方案。
并为我糟糕的英语道歉。
您使用此 Intent
创建警报:
Intent intent = new Intent(mContext, LocalNotification.class);
但您尝试使用此 Intent
:
取消它
Intent updateServiceIntent = new Intent(mActivity, ACT_Home.class);
这些 Intent
不匹配,因此取消不执行任何操作。如果你想取消闹钟,你需要在取消调用中使用一个 Intent
来匹配你用来安排闹钟的 Intent
。
我从 Activity 安排闹钟。
private AlarmManager mAlarmManager;
mAlarmManager = (AlarmManager) ACT_ActiveSession.getAppContext()
.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(mContext, LocalNotification.class);
intent.putExtra("alertBody", "");
intent.putExtra(K.SESSIONID, "");
intent.putExtra("TIME", "");
intent.putExtra("BATCHNO","");
intent.putExtra("REQUEST_CODE", "");
PendingIntent pendingIntent = PendingIntent.getBroadcast(
ACT_ActiveSession.getAppContext(), REQUEST_CODE, intent, 0);
mAlarmManager.setExact(AlarmManager.RTC_WAKEUP, finishTime,
pendingIntent);
// alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, finishTime,
// (1 * 1000), pendingIntent);
intent.putExtra("","");
仅用于 BroadcastReceiver
并从片段取消警报
private AlarmManager mAlarmManager;
mAlarmManager = (AlarmManager) mActivity
.getSystemService(Context.ALARM_SERVICE);
Intent updateServiceIntent = new Intent(mActivity,
ACT_Home.class);
PendingIntent pendingUpdateIntent = PendingIntent.getBroadcast(
mActivity, REQUEST_CODE,
updateServiceIntent, 0);
pendingUpdateIntent.cancel();
// Cancel alarms
if (pendingUpdateIntent != null) {
mAlarmManager.cancel(pendingUpdateIntent);
Log.e("", "alaram canceled ");
} else {
Log.e("", "pendingUpdateIntent is null");
}
但是警报管理器没有被取消。
这里我更改了mActivity
= MyActivity
的static getApplicationContext();
并且还更改了不同的Flags和不同的Context.
我也参考了很多答案。 但是任何代码都不起作用。 Link1 Link2 Link3
请尽快给我解决方案。 并为我糟糕的英语道歉。
您使用此 Intent
创建警报:
Intent intent = new Intent(mContext, LocalNotification.class);
但您尝试使用此 Intent
:
Intent updateServiceIntent = new Intent(mActivity, ACT_Home.class);
这些 Intent
不匹配,因此取消不执行任何操作。如果你想取消闹钟,你需要在取消调用中使用一个 Intent
来匹配你用来安排闹钟的 Intent
。