我在一个活动中创建了一个警报,并试图在另一个广播接收器中取消它。该警报在特定时间触发,以向用户显示通知
我在这里检查了不同的帖子,但是没有用。
我正在使用的代码如下:
MainActivity.java
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(mydateobj.getTime());
calendar.set(Calendar.HOUR_OF_DAY, 9);
calendar.set(Calendar.MINUTE, 20);
Intent intent = new Intent(MainActivity.this, Myreceiver.class);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
intent.putExtra("pendingIntent",pendingIntent);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
以及我的 Broadcastreceiver 实现如下:
@Override
public void onReceive(Context context, Intent intent) {
Intent newIntent = new Intent(context,Myreceiver.class);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
if(intent!= null) {
PendingIntent pendingIntent = intent.getParcelableExtra("pendingIntent");
if(pendingIntent!=null)
{
alarmManager.cancel(pendingIntent);
pendingIntent.cancel();
}
}
我得到的前瞻性Intent为null,因此它没有取消,所以我得到了重复的Notification。
我还尝试在接收器中创建具有相同ID和标志的 PendingIntent ,并尝试取消警报管理器以及在此接收器中创建的 pendingIntent ,但是它没有不行。
感谢您的帮助。