Android xamarin 在特定日期和月份的本地通知
Android xamarin local notification in specific day and month
一段时间以来,他一直在尝试在应用程序中设置指定日期和月份的通知。不幸的是,每天调用它几秒钟后就会出现通知。
这是我的代码:
private void Remind_Click(object sender, System.EventArgs e)
{
string title = "If you see this";
string message = "it means it works";
Intent alarmIntent = new Intent(Application.Context, typeof(AlarmReceiver));
alarmIntent.PutExtra("message", message);
alarmIntent.PutExtra("title", title);
var pendingIntent = PendingIntent.GetBroadcast(this, 0, alarmIntent, PendingIntentFlags.UpdateCurrent);
var alarmManager = GetSystemService(AlarmService).JavaCast<AlarmManager>();
DateTime nowDate = DateTime.Now;
int month = 09;
int day = 24;
DateTime newDate = new DateTime(nowDate.Year, month, day);
DateTime date = newDate;
var ms = (long)(date - new DateTime(1970, 1, 1)).TotalMilliseconds;
alarmManager.SetInexactRepeating(AlarmType.RtcWakeup, 3600000, ms, pendingIntent);
ShowSnack(main, $"Set date: {date} ");
}
请帮我解决这个问题。
- 对于
setInexactRepeating (int type, long startTime, long intervalTime, PendingIntent pi);
第二个参数是开始执行的时间,第三个参数是两次执行的间隔时间。所以你的参数输入有误
- 如果只触发一次事件,可以使用
set(int type, long startTime, PendingIntent pi);
使用此方法只会触发一次事件。
注意:因为你使用的是AlarmType.RtcWakeup。 DateTime.Now的时间可能和Utc时间不一样(可以用DateTime.Now和DateTime.UtcNow看两者有没有时间差)。
一段时间以来,他一直在尝试在应用程序中设置指定日期和月份的通知。不幸的是,每天调用它几秒钟后就会出现通知。
这是我的代码:
private void Remind_Click(object sender, System.EventArgs e)
{
string title = "If you see this";
string message = "it means it works";
Intent alarmIntent = new Intent(Application.Context, typeof(AlarmReceiver));
alarmIntent.PutExtra("message", message);
alarmIntent.PutExtra("title", title);
var pendingIntent = PendingIntent.GetBroadcast(this, 0, alarmIntent, PendingIntentFlags.UpdateCurrent);
var alarmManager = GetSystemService(AlarmService).JavaCast<AlarmManager>();
DateTime nowDate = DateTime.Now;
int month = 09;
int day = 24;
DateTime newDate = new DateTime(nowDate.Year, month, day);
DateTime date = newDate;
var ms = (long)(date - new DateTime(1970, 1, 1)).TotalMilliseconds;
alarmManager.SetInexactRepeating(AlarmType.RtcWakeup, 3600000, ms, pendingIntent);
ShowSnack(main, $"Set date: {date} ");
}
请帮我解决这个问题。
- 对于
setInexactRepeating (int type, long startTime, long intervalTime, PendingIntent pi);
第二个参数是开始执行的时间,第三个参数是两次执行的间隔时间。所以你的参数输入有误 - 如果只触发一次事件,可以使用
set(int type, long startTime, PendingIntent pi);
使用此方法只会触发一次事件。
注意:因为你使用的是AlarmType.RtcWakeup。 DateTime.Now的时间可能和Utc时间不一样(可以用DateTime.Now和DateTime.UtcNow看两者有没有时间差)。