使用 Java 在 Android 13 上以编程方式添加日历事件

add programmatically calendar event on android 13 with java

提问人:Marco Ferrante 提问时间:7/5/2023 更新时间:7/5/2023 访问量:96

问:

我创建了一个预订应用程序。预订后,活动会自动添加到日历中。这适用于大多数设备。我遇到了一些无法正常工作的设备(小米和三星),我不知道原因是操作系统版本还是其他原因。

以下代码是我用于大多数设备的代码

ContentValues event = new ContentValues();
        event.put(CalendarContract.Events.CALENDAR_ID, 1);
        event.put(CalendarContract.Events.TITLE, "title");
        event.put(CalendarContract.Events.DESCRIPTION, "description");
        event.put(CalendarContract.Events.EVENT_LOCATION, "location");
        event.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());

        event.put(CalendarContract.Events.DTSTART, date + (begin * 3600000) + 1800000);
        event.put(CalendarContract.Events.DTEND, date + (end * 3600000) + 1800000);

        event.put(CalendarContract.Events.ALL_DAY, 0); // 0 per false, 1 per true
        event.put("eventStatus", 1);
        event.put(CalendarContract.Events.HAS_ALARM, 0);

        String eventUriString = "content://com.android.calendar/events";
        Uri eventUri = requireContext().getApplicationContext()
                .getContentResolver()
                .insert(Uri.parse(eventUriString), event);
        long eventID = Long.parseLong(eventUri.getLastPathSegment());


        int minutes=30;


        // add reminder for the event
        ContentValues reminders = new ContentValues();
        reminders.put("event_id", eventID);
        reminders.put("method", "1");
        reminders.put("minutes", minutes);

        String reminderUriString = "content://com.android.calendar/reminders";
        getContext().getContentResolver()
                .insert(Uri.parse(reminderUriString), reminders);

我在某处找到了一些代码,允许您打开已填写字段的日历应用程序。然而,我想要的是,用户甚至没有感知到事件已经创建

java 事件 android-calendar

评论

0赞 Manjunath 7/5/2023
github.com/ajeethere/EventsCalender 下载代码并检查它
0赞 CommonsWare 7/5/2023
“我遇到了一些设备,它不起作用” - 请详细解释“它不起作用”是什么意思。例如,你崩溃了吗?如果是这样,与崩溃关联的堆栈跟踪是什么?

答: 暂无答案