1

我添加了一个新日历:

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和名称的数组字符串)

任何想法?

4

2 回答 2

0

尝试这个:

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

id您要删除的日历的 ID 在哪里。

尚未对其进行测试,但适用于事件。

于 2014-01-13T22:28:26.883 回答
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 对您来说可能是多余的,因此只需将其删除。(实际上几乎没有任何开销)

于 2014-01-10T18:02:58.013 回答