我遇到警报管理器的问题,但没有触发我的日程安排通知。
class MyNotification : INotification
{
private List<Note> ListNotes;
Intent alarmIntent;
DateTime baseTime = new DateTime(1970, 1, 1,0,0,0);
public async void CreateScheduleNotifications()
{
ListNotes = await DataBaseService.getTimeActiveNotes();
foreach(Note note in ListNotes )
{
long scheduleAlarmTime = this.setScheduleAlarmTime(note.AlarmTime);
this.addNewScheduleNotification(note.Id,note.Title,note.Content,scheduleAlarmTime);
}
}
private void addNewScheduleNotification(int id,string title, string content,long alarmTime)
{
alarmIntent = new Intent(MainActivity.AndroidContext, typeof(AlamReciver));
alarmIntent.PutExtra("id", id);
alarmIntent.PutExtra("title", title);
alarmIntent.PutExtra("content", content);
var PI = PendingIntent.GetBroadcast(MainActivity.AndroidContext, id, alarmIntent, PendingIntentFlags.CancelCurrent);
AlarmManager alarmManager = (AlarmManager)MainActivity.AndroidContext.GetSystemService(Context.AlarmService);
alarmManager.Set(AlarmType.RtcWakeup, alarmTime, PI);
}
private long setScheduleAlarmTime(DateTime noteAlarmTime)
{
TimeSpan calcTime = noteAlarmTime - baseTime;
return (long)calcTime.TotalMilliseconds;
}
}
我的“noteAlarmTime”格式是(y,m,d,h,m,s)。 它在API 23的模拟器上运行完美,只在那里。在使用API 25的模拟器或使用API 23或25的智能手机上根本不起作用。
我尝试修改此行
alarmManager.Set(AlarmType.RtcWakeup, alarmTime, PI);
为:
alarmManager.Set(AlarmType.ElapsedRealtime,SystemClock.ElapsedRealtime()+ 5 * 1000,PI); 然后解雇通知。
那么为什么通知实时通知不起作用?
谢谢。
时间计算:
private long setScheduleAlarmTime(DateTime noteAlarmTime)
{
TimeSpan calcTime = noteAlarmTime.ToUniversalTime() - baseTime;
return (long)calcTime.TotalMilliseconds;
}