我创建了一个应该每天运行的警报管理器。 警报只应设置一次,因为在我的MainActivity中调用该方法。但Pending intent始终返回null。 我希望在它创建之后它将返回相同的未决意图,而不必再次设置警报。
public void setAlarm() {
Intent intent = new Intent(context, BroadcastLogRaces.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 99,
intent,PendingIntent.FLAG_NO_CREATE);
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
if (pi == null) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 19);
calendar.set(Calendar.MINUTE,00);
calendar.set(Calendar.SECOND, 00);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24 * 60 * 60 * 1000, pi);
Log.i("alarme", "alarme agendado as "+ new Date().toString());
}
}
答案 0 :(得分:0)
您在创建FLAG_NO_CREATE
时使用了标记PendingIntent
,它说
/**
* Flag indicating that if the described PendingIntent does not
* already exist, then simply return null instead of creating it.
* For use with {@link #getActivity}, {@link #getBroadcast}, and
* {@link #getService}.
*/
您需要使用FLAG_CANCEL_CURRENT
或FLAG_UPDATE_CURRENT
,它们基本上取消当前待处理的意图,并且如果当前待处理的意图仍然存在,则替换额外的数据。