有一个每小时/每周/等...通知提醒(使用AlarmManager?)

时间:2012-07-04 06:43:14

标签: java android notifications alarmmanager

我几乎无处不在!我找不到任何帮助或教程或每周,每小时或每月发出通知触发器的示例。我听说过一些关于使用AlarmManager的事情,但我无法让它工作。

我没有使用过多Java(更像是一个客观的人),但我在使用这个通知系统时遇到了一些麻烦。基本上我只想要一个按钮,当我打开时会每周通知用户重新打开应用程序(例如)。并且当他们不希望每周都被通知“打开应用程序”时触发。无论如何,任何想法?我已经弄清楚如何获得一般性的通知,但我不能让它延迟,或者在应用程序未打开时发生。

谢谢!

2 个答案:

答案 0 :(得分:3)

 Calendar calendar = Calendar.getInstance();

    // 8 AM Each day 
    calendar.set(Calendar.HOUR_OF_DAY, 8);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, MyClass.class), PendingIntent.FLAG_UPDATE_CURRENT);
    am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);

这将在每天早上8点发出警报。同样,您可以为自己喜欢的任何一天设置闹钟。

获取通知:

  NotificationManager nm;
  nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);        
  CharSequence from = "VIPUL";
  CharSequence message = "Crazy About Android...";
  PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
    new Intent(), 0);
  Notification notif = new Notification(R.drawable.icon,
    "Crazy About Android...", System.currentTimeMillis());
  notif.setLatestEventInfo(context, from, message, contentIntent);
  nm.notify(1, notif);

您必须在从警报管理器调用的活动上写下此内容。这将显示通知。

您还可以设置在用户点击通知时调用的待处理意图。

答案 1 :(得分:0)

确实,您需要查看AlarmManager类,尤其是setRepeating()方法。它允许您设置触发操作的间隔。希望这会有所帮助。