Has*_*y31 52 android alarmmanager
我正在建立一个报警应用程序.我已经成功实现了基本的报警功能.
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);
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,用户可以选择天(星期日,星期一......)每周重复闹钟.我正在尝试创建多个警报,每周重复一次,但不知道该怎么做.我可以使用(重复)间隔创建它还是应该创建多个警报管理器?
Par*_*han 147
您需要使用different Broadcast id's的pending intents.像这样的东西:
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);
Run Code Online (Sandbox Code Playgroud)
使用系统时间应该是您触发的每个待处理目标的唯一标识符.
Ree*_*eed 10
来自文档:
如果已安排此Intent的警报(两个意图的相等性由filterEquals(Intent)定义),则它将被删除并替换为此
多个AlarmManagers不能解决您的问题.如果它们有多个不同的警报(不同的时间和不同的日期),那么您需要在BroadcastReceiver每次触发上一个警报时设置警报.
您还需要按住RECEIVE_BOOT_COMPLETED并BroadcastReceiver接收启动,以便在重新启动电话时可以重新安排警报.
要设置多个警报,您需要定义Intent每次警报,以便与其他警报区分开来.我发现这样做最简单的方法是设置data你的Intent东西字段如下:
// 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));
...
Run Code Online (Sandbox Code Playgroud)
你的其余代码@ Hassy31原样很好并保持不变.
请注意,根据文档requestCode,PendingIntent.getBroadcast()方法中的参数(由@parag建议)未使用,因此这不是正确的方法.
| 归档时间: |
|
| 查看次数: |
56658 次 |
| 最近记录: |