簡體   English   中英

警報管理器未設置特定日期或超過24小時的警報

[英]Alarm Manager not setting alarms for particular dates or over 24 hours

這是我觸發警報的功能,它可以在一天中的特定時間設置警報,但是當我嘗試設置第二天或超過24小時的警報時,它將起作用並且沒有通知我。我已經檢查了一些解決方案,但找不到答案。

警報管理器代碼.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);
}

您更新的代碼:

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);
}

要設置其他日期的鬧鍾,請執行以下操作:

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

這會將警報設置為每月的11號上午8點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM