Android日历提供商:如何删除自己的本地日历?

前端之家收集整理的这篇文章主要介绍了Android日历提供商:如何删除自己的本地日历?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

  1. private void createCalendarTest()
  2. {
  3. Uri.Builder builder = Calendars.CONTENT_URI.buildUpon();
  4. builder.appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER,"true")
  5. .appendQueryParameter(Calendars.ACCOUNT_NAME,"private")
  6. .appendQueryParameter(Calendars.ACCOUNT_TYPE,CalendarContract.ACCOUNT_TYPE_LOCAL);
  7. Uri uri = builder.build();
  8. ContentValues values = new ContentValues();
  9. values.put(Calendars.NAME,"TEST");
  10. values.put(Calendars.CALENDAR_DISPLAY_NAME,"Calendar named TEST");
  11. values.put(Calendars.SYNC_EVENTS,false);
  12. values.put(Calendars.VISIBLE,true);
  13. getContentResolver().insert(uri,values);
  14. }

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

  1. private void deleteCalendarTest()
  2. {
  3. Uri.Builder builder = Calendars.CONTENT_URI.buildUpon();
  4. builder.appendPath("6") // here for testing; I know the calender has this ID
  5. .appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER,CalendarContract.ACCOUNT_TYPE_LOCAL);
  6. Uri uri = builder.build();
  7. getContentResolver().delete(uri,null,null);
  8. Toast.makeText(this,"??? deleteCalendarTest() not working",Toast.LENGTH_SHORT).show();
  9. }

我该如何解决

最佳答案
在阅读了更多关注文档之后,我发现你应该在以下字段中添加内容值:

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

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

猜你在找的Android相关文章