gpt4 book ai didi

android - 更新 Android 日历事件

转载 作者:行者123 更新时间:2023-11-30 00:31:07 25 4
gpt4 key购买 nike

我正在尝试以编程方式更新日历事件,但我遇到了一些问题。

我正在使用来自 Google Android 文档的更新代码:https://developer.android.com/guide/topics/providers/calendar-provider.html#update-event

这是我的代码:

ContentValues values = new ContentValues();
Uri updateUri = null;
// New end for event
values.put(CalendarContract.Events.DTEND, endMillis);
updateUri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, eventID);
int rows = c.getContentResolver().update(updateUri, values, null, null);
Log.i("DEBUG_TAG", "Rows updated: " + rows);

但 rows 变量总是返回 0,除非我进入应用程序设置,删除日历存储,添加新日历和新事件,然后当我尝试更新它时,它只工作一次。如果我尝试添加另一个事件并在之后更新它,行将再次返回 0。

有什么想法吗?

谢谢

请注意,我的应用最低 API 级别为 17(在该级别上它不起作用),但我尝试了 API 级别 25 并且它可以运行,所以您是否知道如何为我的代码添加对以前 Android 版本的支持?我还发现,经过一些测试后,它可以从 API 级别 21 开始工作。在以下情况下,它不会。

编辑:我找到了解决方案,请查看下面的答案。

最佳答案

这是对我有用的解决方案:

我使用的 eventID 是对 CalendarContract.Events._ID 列的查询结果,但我必须使用 CalendarContract.Instances.EVENT_ID 提供的 ID。事实上,如果我创建一个新事件(第一个事件),它有 _id = 1 和 event_id = 1,如果我从 Android 日历应用程序中删除它并用我的应用程序创建一个新事件,它也有 _id = 1 但 event_id = 2.因此,如果我在 withAppendedID() 中使用 _id 而不是 event_id,则更新查询失败。

这是对我有用的代码。 startMillisendMillis 分别是您的 session 开始时间和结束时间(以毫秒为单位)。

        Uri.Builder eventsUriBuilder = CalendarContract.Instances.CONTENT_URI
.buildUpon();
ContentUris.appendId(eventsUriBuilder, startMillis);
ContentUris.appendId(eventsUriBuilder, endMillis);
Uri eventsUri = eventsUriBuilder.build();

String[] column = {CalendarContract.Instances.EVENT_ID, CalendarContract.Events.DTSTART, CalendarContract.Events.DTEND, CalendarContract.Events.TITLE};
Cursor cursor;
cursor = c.getContentResolver().query(eventsUri, column, CalendarContract.Events.CALENDAR_ID+"="+Constant.ID_CALENDAR, null, CalendarContract.Instances.DTSTART + " ASC");


if (cursor.moveToFirst()) {
do {
uri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI,cursor.getLong(0));
} while (cursor.moveToNext());
}

cursor.close();
c.getContentResolver().delete(uri, null, null);

关于android - 更新 Android 日历事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44331206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com