gpt4 book ai didi

Android 日历提供程序 : How can I delete my own local calendars?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:44:57 25 4
gpt4 key购买 nike

我正在学习如何使用 Android 日历。到目前为止,我能够显示有关现有日历的信息。我还可以创建自己的本地日历——测试代码如下:

private void createCalendarTest()
{
Uri.Builder builder = Calendars.CONTENT_URI.buildUpon();
builder.appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER, "true")
.appendQueryParameter(Calendars.ACCOUNT_NAME, "private")
.appendQueryParameter(Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL);

Uri uri = builder.build();

ContentValues values = new ContentValues();
values.put(Calendars.NAME, "TEST");
values.put(Calendars.CALENDAR_DISPLAY_NAME, "Calendar named TEST");
values.put(Calendars.SYNC_EVENTS, false);
values.put(Calendars.VISIBLE, true);

getContentResolver().insert(uri, values);
}

实际上,我可以创建许多仅在 _ID 上有所不同的日历。我在别处读到只有在使用同步适配器时才能创建日历。现在,如何删除日历?我希望 URI 还必须包含同步适配器信息和已删除日历的 _ID。我尝试了以下代码,但没有成功:

private void deleteCalendarTest()
{
Uri.Builder builder = Calendars.CONTENT_URI.buildUpon();
builder.appendPath("6") // here for testing; I know the calender has this ID
.appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER, "true")
.appendQueryParameter(Calendars.ACCOUNT_NAME, "private")
.appendQueryParameter(Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL);

Uri uri = builder.build();

getContentResolver().delete(uri, null, null);
Toast.makeText(this, "??? deleteCalendarTest() not working", Toast.LENGTH_SHORT).show();
}

我该如何解决?

最佳答案

在仔细阅读文档后,我发现您还应该将以下字段添加到内容值中:

values.put(CalendarContract.Calendars.SYNC_EVENTS, 1);
values.put(CalendarContract.Calendars.ACCOUNT_NAME, "private");
values.put(CalendarContract.Calendars.ACCOUNT_TYPE,CalendarContract.ACCOUNT_TYPE_LOCAL);

然后其他一切都应该没问题,您应该能够删除插入的日历! ;)

关于Android 日历提供程序 : How can I delete my own local calendars?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24866621/

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