Android 未通知提醒/事件
我想在androidAndroid 未通知提醒/事件,android,android-contentprovider,android-calendar,reminders,Android,Android Contentprovider,Android Calendar,Reminders,我想在androidcalendar中设置提醒和事件,通过使用下面的代码,我可以看到android日历中的事件,但该事件没有被通知或警报或其他任何东西。我使用timpicker指定时间。我的问题是提醒和事件没有被通知或警报。代码或警报中是否有问题还有别的吗 btnSetAlarm.setOnClickListener(new View.OnClickListener() { @Override public void onCl
calendar
中设置提醒和事件,通过使用下面的代码,我可以看到android日历中的事件,但该事件没有被通知或警报或其他任何东西。我使用timpicker
指定时间。我的问题是提醒和事件没有被通知或警报。代码或警报中是否有问题还有别的吗
btnSetAlarm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TimePickerDialog timePickerDialog = new TimePickerDialog(getActivity(), new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int hours, int minutes) {
setEvents(hours,minutes);
}
}, hour, minute, false);
timePickerDialog.show();
}
});
private void setReminders(Long eventID) {
Calendar calendar=Calendar.getInstance();
ContentResolver cr = getActivity().getContentResolver();
ContentValues reminders = new ContentValues();
reminders.put(CalendarContract.Reminders.EVENT_ID, eventID);
reminders.put(CalendarContract.Reminders.METHOD, CalendarContract.Reminders.METHOD_ALARM);
reminders.put(CalendarContract.Reminders.MINUTES,5);
Uri eventsUri = Uri.parse("content://com.android.calendar/reminders");
// event is added
cr.insert(eventsUri, reminders);
}
private void setEvents(int hours, int minutes) {
Calendar calNow = Calendar.getInstance();
Calendar calSet = (Calendar) calNow.clone();
calSet.set(Calendar.HOUR_OF_DAY, hours);
calSet.set(Calendar.MINUTE, minutes);
calSet.set(Calendar.SECOND, 0);
calSet.set(Calendar.MILLISECOND, 0);
ContentResolver cr = getActivity().getContentResolver();
ContentValues values = new ContentValues();
values.put(CalendarContract.Events.DTSTART, calSet.getTimeInMillis());
values.put(CalendarContract.Events.DTEND, calSet.getTimeInMillis() + 10000 );
values.put(CalendarContract.Events.HAS_ALARM,1);
values.put(CalendarContract.Events.TITLE, "My Title");
values.put(CalendarContract.Events.DESCRIPTION, "Android Development");
values.put(CalendarContract.Events.CALENDAR_ID, 1);
values.put(CalendarContract.Events.EVENT_TIMEZONE, Calendar.getInstance().getTimeZone().getID());
Uri eventsUri = Uri.parse("content://com.android.calendar/events");
// event is added
Uri uri=cr.insert(eventsUri, values);
// get the Event ID That is the Last element in the Uri
Long eventID = Long.parseLong(uri.getLastPathSegment());
Log.e(TAG, "" + eventID);
setReminders(eventID);
}
真正的问题是设备Redmi Note 2没有为
日历
事件提供适当的BroadcastListner
,需要从设置证券手动启用权限,需要将我们的应用程序设置为自动启动
模式以列出广播,因此简言之,这是与设备相关的问题在其他工作正常的设备上验证了此代码真正的问题在于设备Redmi Note 2没有为日历
事件提供适当的广播列表器
,需要从设置安全手动启用权限,并且需要将我们的应用程序设置为自动启动
模式,以便列表器广播因此,简而言之,这是与设备相关的问题。我已在其他设备中验证了此代码,该设备工作正常。来自文档:
服务器上设置的报警方法。方法\默认值、方法\警报、方法\电子邮件、方法\短信和方法\警报是可能的值;该设备将只处理METHOD_DEFAULT和METHOD_ALERT提醒(其他类型的提醒仅存储,以便我们在进行更改时将相同的提醒信息发送回服务器)
请尝试将文档中的
CalendarContract.Emlerments.METHOD\u ALARM
更改为CalendarContract.Emlerments.METHOD\u ALERT
:
服务器上设置的报警方法。方法\默认值、方法\警报、方法\电子邮件、方法\短信和方法\警报是可能的值;该设备将只处理METHOD_DEFAULT和METHOD_ALERT提醒(其他类型的提醒仅存储,以便我们在进行更改时将相同的提醒信息发送回服务器)
尝试将CalendarContract.Emlerments.METHOD\u ALARM
更改为CalendarContract.Emlerments.METHOD\u ALERT