[英]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.