首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在android中使用告警管理器设置多个告警

如何在android中使用告警管理器设置多个告警
EN

Stack Overflow用户
提问于 2011-12-12 11:42:26
回答 7查看 65.1K关注 0票数 61

我正在构建一个警报应用程序。我已经成功实现了基本告警功能。

代码语言:javascript
复制
Calendar calendar = Calendar.getInstance();
calendar.set(calendar.HOUR_OF_DAY, sHour);
calendar.set(calendar.MINUTE, sMin);
calendar.set(calendar.SECOND, 0);
calendar.set(calendar.MILLISECOND, 0);
long sdl = calendar.getTimeInMillis();

Intent intent = new Intent(AlarmList.this, AlarmReceiver.class);
PendingIntent sender = PendingIntent.getBroadcast(AlarmList.this, 0, intent,PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager ALARM1 = (AlarmManager)getSystemService(ALARM_SERVICE);
ALARM1.set(AlarmManager.RTC_WAKEUP, sdl, sender);

在我的应用程序中,用户可以选择days (sunday,monday...)来每周重复闹钟。我正在尝试创建多个警报,以便每周重复,但不知道如何做到这一点。我可以使用(重复)间隔创建它吗?还是应该创建多个报警管理器?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-04-10 22:09:07

对于pending intents,您需要使用different Broadcast id's。如下所示:

代码语言:javascript
复制
Intent intent = new Intent(load.this, AlarmReceiver.class);
final int id = (int) System.currentTimeMillis();
PendingIntent appIntent = PendingIntent.getBroadcast(this, id, intent, PendingIntent.FLAG_ONE_SHOT);

对于您触发的每个挂起的意图,使用系统时间都应该是唯一的标识符。

票数 169
EN

Stack Overflow用户

发布于 2011-12-12 16:34:03

来自the docs

如果已经为此意图计划了一个警报( filterEquals(Intent)定义了两个意图的相等,则它将被移除并替换为此警报

多个AlarmManagers不能解决您的问题。如果它们有多个不同的警报(不同的时间和不同的日期),那么您需要在每次触发之前的警报时在BroadcastReceiver中设置警报。

您还需要持有RECEIVE_BOOT_COMPLETED并具有接收启动的BroadcastReceiver,以便在手机重新启动时可以重新安排您的闹钟。

票数 10
EN

Stack Overflow用户

发布于 2012-11-21 22:52:36

要设置多个警报,您需要每次定义Intent,以便将其与其他警报区分开来。我找到的最简单的方法是设置Intentdata字段,如下所示:

代码语言:javascript
复制
// give your alarm an id and save it somewhere
// in case you want to cancel it in future
String myAlarmId = ...;

// create your Intent
Intent intent = new Intent(AlarmList.this, AlarmReceiver.class);
intent.setData(Uri.parse("myalarms://" + myAlarmId));
...

您的代码@Hassy31的其余部分没有问题,并且保持不变。

请注意,根据文档,PendingIntent.getBroadcast()方法中的requestCode参数(由@parag建议)未使用,因此这不是处理它的正确方法。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8469705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档