我正在编写一个Android应用程序,其中包含截止日期列表,我想通知用户,当时间到了,即使应用程序未运行,其中一个应用程序已在截止日期到期时过期。 我使用了一个AlarmManager,一个自定义的BroadcastReceiver和一个自定义的Services类,但即使我给出了警报的准确时间,它也只会在我运行应用程序时触发通知。 这是我设置闹钟的地方:
this[elementToToggle]
这是BroadcastReceiver:
methods: {
enableExtraPriceField: function(elementToToggle) {
this[elementToToggle] = true;
var el = document.getElementById(elementToToggle);
el.disabled = false;
el.placeholder = '';
el.focus();
}
}
这是服务类:
public static void setAlarm( String string){
AlarmManager alarms =(AlarmManager)Utility.getContext().getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(ALARM_INTENT_FILTER);
intent.putExtra("content",string);
PendingIntent pendingIntent = PendingIntent.getBroadcast(Utility.getContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 12);
calendar.set(Calendar.MINUTE,00);
calendar.set(Calendar.SECOND,00);
calendar.set(Calendar.MILLISECOND,00);
calendar.set(Calendar.AM_PM,Calendar.PM);
alarms.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}
这是我注册服务和接收者的清单:
public class NotificationReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Intent service1 = new Intent(context, NotificationServices.class);
service1.putExtra("content",intent.getStringExtra("content"));
context.startService(service1);
}
}
错误在哪里?为什么只有在我打开应用时,而不是在当天的确切时间或应用未运行时才会触发通知?
答案 0 :(得分:1)
注意:从API 19开始,所有重复警报都不准确。如果您的应用程序需要精确的交付时间,那么它必须使用一次性精确警报,每次重新安排如上所述。 targetSdkVersion早于API 19的旧应用程序将继续将所有警报(包括重复警报)视为完全警报。