CalendarContract提醒警报未触发

时间:2019-08-09 13:12:34

标签: android android-calendar

我正在尝试将事件添加到日历,并在提醒开关已打开的情况下添加提醒。我设法通过提醒将事件添加到日历中,但没有触发警报。

这是我开始日期的方式。

String dateTimeString = dateEditText.getText().toString() + timeEditText.getText().toString();

        SimpleDateFormat format = new SimpleDateFormat("MMM dd, yyyyHH:mm", Locale.getDefault());
        Date date = format.parse(dateTimeString);

        long dateTimeInMillis = Objects.requireNonNull(date).getTime();

        Calendar beginTime = Calendar.getInstance();

        beginTime.setTimeInMillis(dateTimeInMillis);

日期是从datePickerDialog获取的,我以(MMM dd, yyyy)的格式获取日期,而时间是从timePickerDialog的{​​{1}}格式获取的。

因此,上面的代码将日期和时间结合起来,并将其转换为毫秒。

这是将事件添加到日历的完整代码

(HH:mm)

try { String eventTitle = nameEditText.getText().toString(); String dateTimeString = dateEditText.getText().toString() + timeEditText.getText().toString(); SimpleDateFormat format = new SimpleDateFormat("MMM dd, yyyyHH:mm", Locale.getDefault()); Date date = format.parse(dateTimeString); long dateTimeInMillis = Objects.requireNonNull(date).getTime(); Calendar beginTime = Calendar.getInstance(); Calendar endCalendar = Calendar.getInstance(); beginTime.setTimeInMillis(dateTimeInMillis); ContentValues event = new ContentValues(); event.put(CalendarContract.Events.CALENDAR_ID, 1); event.put(CalendarContract.Events.TITLE, eventTitle); event.put(CalendarContract.Events.DTSTART, beginTime.getTimeInMillis()); event.put(CalendarContract.Events.DTEND, endCalendar.getTimeInMillis()); event.put(CalendarContract.Events.HAS_ALARM, true); event.put(CalendarContract.Events.EVENT_TIMEZONE, "UTC"); Uri uri = getContentResolver().insert(CalendarContract.Events.CONTENT_URI, event); if (reminderState == REMINDER_ON) { Long eventId = Long.parseLong(Objects.requireNonNull(uri).getLastPathSegment()); ContentValues reminder = new ContentValues(); reminder.put(CalendarContract.Reminders.EVENT_ID, eventId); reminder.put(CalendarContract.Reminders.METHOD, CalendarContract.Reminders.METHOD_ALERT); reminder.put(CalendarContract.Reminders.MINUTES, reminderTime); getContentResolver().insert(CalendarContract.Reminders.CONTENT_URI, reminder); } } catch (Exception e) { e.printStackTrace(); } 是用户输入int,表示警报消失前的分钟数。

将事件添加到日历后,我在google日历应用中注意到,该事件显示该事件具有通知提醒,但未触发该通知。

在编写此代码之前,我尝试过将事件添加到具有提醒功能的日历中,该操作可以完美运行。将事件添加到日历后,提醒几乎立即被触发。

这是该代码

reminderTime

我怀疑问题出在我如何获得Calendar startcalendar = Calendar.getInstance(); Calendar endcalendar = Calendar.getInstance(); event.put(CalendarContract.Events.CALENDAR_ID, 1); event.put(CalendarContract.Events.TITLE, EventTitle); event.put(CalendarContract.Events.DTSTART, startcalendar.getTimeInMillis()); event.put(CalendarContract.Events.DTEND, endcalendar.getTimeInMillis()); event.put(CalendarContract.Events.HAS_ALARM, true); event.put(CalendarContract.Events.EVENT_TIMEZONE, "GMT-05:00"); Uri url = getContentResolver().insert(CalendarContract.Events.CONTENT_URI, event); long eventId = Long.parseLong(url.getLastPathSegment()); ContentValues reminder = new ContentValues(); reminder.put(CalendarContract.Reminders.EVENT_ID, eventId); reminder.put(CalendarContract.Reminders.MINUTES, 10); reminder.put(CalendarContract.Reminders.METHOD, CalendarContract.Reminders.METHOD_ALERT); getContentResolver().insert(CalendarContract.Reminders.CONTENT_URI, reminder); 上,但是我无法告知我做错了什么。希望你们能帮上忙。谢谢。

0 个答案:

没有答案