如何在特定时间在Android应用程序中设置通知?

时间:2015-03-15 10:35:57

标签: android android-intent android-activity alarmmanager android-alarms

我使用android applicationset up Notification(Alarm)AlarmManager中使用了以下代码。

 public void setAlarm() {
          Intent intent = new Intent(MainActivity.this, TimeAlarm.class);
          PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
            intent, PendingIntent.FLAG_UPDATE_CURRENT);

          am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),
            (40000), pendingIntent);
         }

或者我应该使用以下代码

   Calendar calendar = Calendar.getInstance();

      calendar.set(Calendar.MONTH, 3);
      calendar.set(Calendar.YEAR, 2015);
      calendar.set(Calendar.DAY_OF_MONTH, 21);

      calendar.set(Calendar.HOUR_OF_DAY,11);
      calendar.set(Calendar.MINUTE, 15);
      calendar.set(Calendar.SECOND, 0);
      calendar.set(Calendar.AM_PM,Calendar.AM);

      Intent myIntent = new Intent(MainActivity.this, MyReceiver.class);
      pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent,0);

      AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
      alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent);
  

我想在此特定时间设置(通知)闹钟:2015年3月21日上午11:15

     

任何人都可以帮我设置吗?

3 个答案:

答案 0 :(得分:3)

首先,您需要使用Calendar将日期设置为:

Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, 3);
cal.set(Calendar.YEAR, 2015);
cal.set(Calendar.DAY_OF_MONTH, 15);

cal.set(Calendar.HOUR_OF_DAY, 11);
cal.set(Calendar.MINUTE, 15);

然后在setAlarm()方法中,您只需设置一次警报。你不需要重复它:

public void setAlarm() {
     Intent intent = new Intent(MainActivity.this, TimeAlarm.class);
     PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
        intent, PendingIntent.FLAG_UPDATE_CURRENT);

     am.set(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(),pendingIntent);
}

答案 1 :(得分:1)

答案 2 :(得分:1)

每秒运行一个线程,并将指定的时间与当前时间进行比较,如果匹配则设置通知。

SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy HH:mm aa");
String dateTimeinSrting = "21-Mar-2015 11:15 am";

try {
    Date dateTime = formatter.parse(dateTimeInString);
} catch (ParseException e) {
    e.printStackTrace();
}

float dateTimeInMillis = dateTime.getTime();

handler = new Handler();

final Runnable r = new Runnable() {
    public void run() {

        Calendar calendar;

        if(Float.compare(dateTimeInMillis, calendar.getTimeInMillis())){
            //Set the notification here
        }

        handler.postDelayed(this, 1000);
    }
};

handler.postDelayed(r, 1000);