警报管理器不为特定日期或超过24小时设置警报

时间:2018-06-09 23:36:44

标签: java android broadcastreceiver alarmmanager android-alarms

这是我触发闹钟的功能,它可以在当天的特定时间设置闹钟。但是当我试图为第二天或超过24小时设置闹钟时,它会起作用并且不会通知我我已经检查了一些解决方案,但无法找到答案。

警报管理员Code.java

 public void triggerAlarmManager(int alarmTriggerTime,int position) {
   // activealarm();

Intent alarmIntent = new Intent(context, AlarmReceiver.class);

 alarmIntent.putExtra("test",news_data.getName());
                             pendingIntent = 
  PendingIntent.getBroadcast(context,position+1, alarmIntent, 
  PendingIntent.FLAG_UPDATE_CURRENT);

    // get a Calendar object with current time
    Calendar cal = Calendar.getInstance();
    // add alarmTriggerTime seconds to the calendar object
    cal.add(Calendar.MINUTE, alarmTriggerTime);


    AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    //get instance of alarm manager
    manager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);//set alarm manager with entered timer by converting into milliseconds

    int days = alarmTriggerTime / 1440;
    int hours = (alarmTriggerTime % 1440)/60;
    int mins = alarmTriggerTime % 60;

    Toast.makeText(context, "Alarm Set for " + "Days:"+days+" Hours:"+hours+" Minutes:"+mins, Toast.LENGTH_SHORT).show();
    Intent intent1=new Intent(context,MainActivity.class);
    intent1.putExtra("ret","ret");
    context.startActivity(intent1);
}

2 个答案:

答案 0 :(得分:1)

您的更新代码:

public void triggerAlarmManager(int alarmTriggerTime,int position) {
   // activealarm();

Intent alarmIntent = new Intent(context, AlarmReceiver.class);

 alarmIntent.putExtra("test",news_data.getName());
                             pendingIntent = 
  PendingIntent.getBroadcast(context,position+1, alarmIntent, 
  PendingIntent.FLAG_UPDATE_CURRENT);

    Calendar setCalendar = Calendar.getInstance()
    // get a Calendar object with current time
    Calendar cal = Calendar.getInstance();
    // add alarmTriggerTime seconds to the calendar object
    cal.add(Calendar.MINUTE, alarmTriggerTime);

    if(cal.before(setCalendar))
            cal.add(Calendar.DATE,1);

    AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    //get instance of alarm manager
manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);//set alarm manager with entered timer by converting into milliseconds

    int days = alarmTriggerTime / 1440;
    int hours = (alarmTriggerTime % 1440)/60;
    int mins = alarmTriggerTime % 60;

    Toast.makeText(context, "Alarm Set for " + "Days:"+days+" Hours:"+hours+" Minutes:"+mins, Toast.LENGTH_SHORT).show();
    Intent intent1=new Intent(context,MainActivity.class);
    intent1.putExtra("ret","ret");
    context.startActivity(intent1);
}

答案 1 :(得分:0)

要设置其他日期的闹钟,请执行以下操作:

cal.set(Calendar.DATE,11);
cal.set(Calendar.HOUR, 8)
cal.set(Calendar.MINUTE,0)

这会将警报设置为每月11号,上午8点