日历删除

时间:2012-09-02 18:18:41

标签: android calendar

我添加了一个新日历:

ContentValues event2= new ContentValues();          
event.put("name", "My calendar");
                    event.put("displayName", "My new calendar");
                    event.put("hidden",0);  
                            Uri url2 = getContentResolver().insert(calendarUri, event);

当我列出所有日历时,会出现新的日历,但我的原生日历APP会崩溃,现在我无法使用新的日历!我在这里搜索了一下,并尝试了一些方法:

Uri uri1=ContentUris.withAppendedId(calendarUri, calId);
  int url3 = getContentResolver().delete(uri1,"_id="+calId",projection);
  int url2 = getContentResolver().delete(calendarUri,"_id=3",projection);

但总是显示错误:名称不能为空:null(投影是带有id和名称的数组字符串)

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

可能有点迟了但是:

Uri evuri = CalendarContract.Calendars.CONTENT_URI;
//substitue your calendar id into the 0
long calid = 0; 
Uri deleteUri = ContentUris.withAppendedId(evuri, calid);
getActivity().getContentResolver().delete(deleteUri, null, null);

适合我。

或者,如果您不知道您的日历ID:

Uri evuri = CalendarContract.Calendars.CONTENT_URI;
Cursor result = getActivity().getContentResolver().query(evuri, new String[] {CalendarContract.Calendars._ID, CalendarContract.Calendars.ACCOUNT_NAME, CalendarContract.Calendars.CALENDAR_DISPLAY_NAME}, null, null, null);
while (result.moveToNext()) 
{
     if(result.getString(2).equals("YOUR CALENDAR NAME"))
     {
         long calid = result.getLong(0);
         Uri deleteUri = ContentUris.withAppendedId(evuri, calid);
         getActivity().getContentResolver().delete(deleteUri, null, null);
     }
}

当然,查找CalendarContract.Calendars.ACCOUNT_NAME对您来说可能是多余的,因此请将其删除。 (真的几乎没有任何开销)

答案 1 :(得分:0)

试试这个:

  

getContentResolver.delete(ContentUris.withAppendedId(CalendarContract.Calendars.CONTENT_URI,   id),null,null);

其中id是您要删除的日历的ID。

尚未测试过,但适合举办活动。