달력

2012-09-02 7 views
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와 이름의 배열 문자열입니다)?

+0

정말로 '진술'을 삭제 진술에 사용 하시겠습니까? 그게 무슨 감각입니까? 메서드의 실제 서명은 다음과 같습니다. delete (Uri url, String where, String [] selectionArgs) 어쩌면 문제는 selectionArgs 대신 투영을 전달한다는 것입니다 (귀하의 경우 null이어야합니다.)? – AlexN

+0

나는 투영 대신에 "null"로 테스트를했지만 ... 작동하지 않습니다. 답변을 주셔서 감사합니다. – sdelatorre

답변

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를 모르는 경우 : 당신은 그래서 그냥 제거를위한 CalendarContract.Calendars.ACCOUNT_NAME을 찾는

물론
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); 
    } 
} 

이 중복 될 수 있습니다.

0

이 시도 (정말 거의 오버 헤드있다) :

id가 삭제하려는 달력의 ID입니다

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

.

테스트를 거치지 않았지만 이벤트에 적용됩니다.