【发布时间】:2016-05-30 15:44:53
【问题描述】:
好吧,我已经尽力寻找上述问题的答案,但到目前为止我的努力都是徒劳的。 我在alarmmanager 类的帮助下创建了一个警报,它将定期(大约5 天)触发通知。 下面是在按钮的 onClick() 中实现报警的代码。
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent notificationIntent = new Intent("android.media.action.DISPLAY_NOTIFICATION");
notificationIntent.addCategory("android.intent.category.DEFAULT");
PendingIntent broadcast = PendingIntent.getBroadcast(this, 100, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar cal = Calendar.getInstance();
if(fromDateEtxt.getText().toString().length()>0) {
cal.add(Calendar.HOUR_OF_DAY, 10);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(), 5 * 24 * 60 * 60 * 1000, broadcast);
}
广播接收器的代码。
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent notificationIntent = new Intent(context, NotificationActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addParentStack(NotificationActivity.class);
stackBuilder.addNextIntent(notificationIntent);
PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
Notification notification = builder.setContentTitle("Demo App Notification")
.setContentText("New Notification From Demo App..")
.setTicker("New Message Alert!")
.setSmallIcon(R.mipmap.ic_launcher)
.setContentIntent(pendingIntent).build();
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, notification);
}}
onClick() 方法除了启动警报之外还会更改活动。现在我面临的问题是我真的不知道如何停止重复警报。我想在特定日期停止闹钟。其次,我很困惑是使用alarm.cancel 来取消警报还是使用另一个警报来取消先前的警报,如here 所示。除此之外,我想知道是否可以从其他活动中取消警报,或者该点似乎没有必要并且可以提前设置日期限制?
【问题讨论】:
标签: android android-intent alarmmanager android-notifications repeatingalarm