我正在构建一个警报应用程序。我已经成功实现了基本告警功能。
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...)来每周重复闹钟。我正在尝试创建多个警报,以便每周重复,但不知道如何做到这一点。我可以使用(重复)间隔创建它吗?还是应该创建多个报警管理器?
发布于 2012-04-10 22:09:07
对于pending intents,您需要使用different Broadcast id's。如下所示:
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);对于您触发的每个挂起的意图,使用系统时间都应该是唯一的标识符。
发布于 2011-12-12 16:34:03
来自the docs
如果已经为此意图计划了一个警报( filterEquals(Intent)定义了两个意图的相等,则它将被移除并替换为此警报
多个AlarmManagers不能解决您的问题。如果它们有多个不同的警报(不同的时间和不同的日期),那么您需要在每次触发之前的警报时在BroadcastReceiver中设置警报。
您还需要持有RECEIVE_BOOT_COMPLETED并具有接收启动的BroadcastReceiver,以便在手机重新启动时可以重新安排您的闹钟。
发布于 2012-11-21 22:52:36
要设置多个警报,您需要每次定义Intent,以便将其与其他警报区分开来。我找到的最简单的方法是设置Intent的data字段,如下所示:
// 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建议)未使用,因此这不是处理它的正确方法。
https://stackoverflow.com/questions/8469705
复制相似问题