Ash*_*i K 0 android broadcastreceiver android-pendingintent
我创建了一个BroadCastReceiver,它使用警报管理器来安排某些事件.
在BroadcastReceiver中,我使用以下代码进行安排.
Intent localIntent = new Intent("com.test.sample");
PendingIntent pi = PendingIntent.getBroadcast(context, 0,
localIntent, 0);
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + (5 * 60 * 1000),
pi);
Run Code Online (Sandbox Code Playgroud)
这里的上下文来自接收器的onReceive方法.
我希望在接收其他广播时取消此警报.我知道警报可以取消 alarmManager.cancel(pi);
但是,如果警报管理员是从任何其他活动设置的,那么如何取消PendingIntent来取消它呢?
谢谢
您需要PendingIntent使用相同的方法创建一个新的,id然后将其作为参数传递给cancelAlarm()方法,如下所示:
创建警报
int alarmId = 0; /* Dynamically assign alarm ids for multiple alarms */
Intent intent = new Intent(context, AlarmReceiver.class); /* your Intent localIntent = new Intent("com.test.sample");*/
intent.putExtra("alarmId", alarmId); /* So we can catch the id on BroadcastReceiver */
PendingIntent alarmIntent;
alarmIntent = PendingIntent.getBroadcast(context,
alarmId, intent,
PendingIntent.FLAG_CANCEL_CURRENT);
Run Code Online (Sandbox Code Playgroud)
取消闹钟(用BroadcastReceiverwhitin onReceive(Context context, Intent intent)方法)
int alarmId = intent.getExtras().getInt("alarmId");
PendingIntent alarmIntent;
alarmIntent = PendingIntent.getBroadcast(this, alarmId,
new Intent(this, AlarmReceiver.class),
PendingIntent.FLAG_CANCEL_CURRENT);
cancelAlarm(alarmIntent);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3592 次 |
| 最近记录: |