Pre*_*hi 10 android android-pendingintent
我有一个应用程序,提醒人们完成他们的任务.所以有一个PendingIntent,现在用户可以在他想要的时候删除警报.在这段代码中,只有一个PendingIntent用于多个用户警报,因此我对取消意图附加功能的特定警报感到困惑"pill".其余警报不应取消.我对这个问题一无所知.希望我很清楚.谢谢
Intent intent = new Intent(this, AlarmNotifyReceiver.class);
intent.putExtra("Name_pill", "pill");
sender = PendingIntent.getBroadcast(this,
DatabaseConstants.NOTIFICATION_ID + 1, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(), sender);
updateTheFlag(pillName[(pillName.length-1)]);
Run Code Online (Sandbox Code Playgroud)
nol*_*man 13
按照Android文档,以阻止报警时,您应该创建一个Intent具有相同的数据,但并不一定是相同的演员:
public void cancel(PendingIntent操作)
删除具有匹配Intent的所有警报.任何类型的警报,其Intent匹配此> 1(由filterEquals(Intent)定义)将被取消.
filterEquals(Intent)
public boolean filterEquals(Intent other)
为了意图解析(过滤)的目的,确定两个意图是否相同.>也就是说,如果他们的行为,数据,类型,类别和类别相同.这不会比较意图中包含的任何额外数据.
正如我在评论中所说,似乎您只需要重新创建完全相同的PendingIntent对象,并将相同的Extras放入其中.然后,你打电话
am.cancel(sender);
Run Code Online (Sandbox Code Playgroud)
并且应取消您的特定警报.我个人无法找到更好的方法.我发现这些信息是为了证实我在其他地方的期望.
它写道:
必须取消重复警报以阻止它们.AlarmManager提供了一个cancel()方法,该方法需要与创建intent相同的intent类.这是您可以取消闹钟的方法.
alarmManager.cancel(的PendingIntent);
请注意,pendingIntent对象不需要是同一个对象.创建警报时,操作,类,类别等意图字段应相同.意图用于识别取消它的警报.
它是在重复警报的情况下,但如果我没有弄错的话,应该以相同的方式取消一次性警报.我无法自己更彻底地测试它,因为我在工作,但这应该有效.
| 归档时间: |
|
| 查看次数: |
10415 次 |
| 最近记录: |