android设置一个只有一个重复的警报

时间:2015-12-18 11:14:59

标签: android alarmmanager android-notifications

目前我在我的Android应用程序中设置了一个警报:

scheduleNotification(getNotification("HELLO WORLD"), 5000, 1);

 private void scheduleNotification(Notification notification, int delay, int id) {

    Intent notificationIntent = new Intent(this, ShowNotification.class);
    notificationIntent.putExtra("NOTIFICATION_ID", id);
    notificationIntent.putExtra("NOTIFICATION", notification);

    AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    alarmManager.set(
            AlarmManager.RTC_WAKEUP,
            System.currentTimeMillis() + delay,
            PendingIntent.getBroadcast(this, id, notificationIntent, PendingIntent.FLAG_ONE_SHOT));
}

private Notification getNotification(String content) {
    Notification.Builder builder = new Notification.Builder(this);
    builder.setContentText(content);
    builder.setSmallIcon(R.drawable.ic_notification_appicon);
    return builder.getNotification();
}

是否有办法设置闹钟,该闹钟有效一次,2小时后只有一次?

4 个答案:

答案 0 :(得分:0)

AlarmManager中没有设置方法。你应该有自己的计数器在N次之后停止它。

答案 1 :(得分:0)

第一次发射时,您可以再次设置闹钟。使用notificationIntent操作很简单。

第二次设置闹钟时,您不应添加新闹钟。

答案 2 :(得分:0)

你的意思是警报会被解雇两次吗? 在特定时间和其他时间2小时后?

您可以为第二个警报输入不同的ID。

类似的东西:

public final static int ID_DEFAULT = 1;
private final static int ID_REPEAT = 2;

...

switch (id) {
  case ID_DEFAULT:
    scheduleNotification(notification, DELAY_TWO_HOURS, ID_REPEAT);
  case ID_REPEAT:
    // Your code
    break;
}

答案 3 :(得分:0)

这将在2小时后调用,尝试

PendingIntent pendingIntent = PendingIntent.getBroadcast(activity, notificationId, myIntent,
                PendingIntent.FLAG_UPDATE_CURRENT);
        AlarmManager alarmManager = (AlarmManager) activity.getSystemService(
                activity.ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, 7200000 , pendingIntent);