2012-10-22 90 views
0

我想刪除所有日曆條目。我正在使用此查詢獲取日曆條目刪除日曆條目

Uri uri = Uri.parse("content://com.android.calendar/events"); 
cursor = context.getContentResolver().query(uri, null, null,null, null); 

但是,遊標每次都會返回空值。我也用 Uri uri = Uri.parse("content://calendar/events");檢查它,但結果是一樣的。

請幫忙。

在此先感謝。

+0

什麼是有針對性的API級別? (在API級別14/Android 4.0之前,日曆API沒有標準化)。 – Stefan

+0

目標api是api等級8及以上。 –

回答

0

//試試這個REQ​​

public void deleteAllCalendar(){ 
     Log.i(TAG, "In deleteAllCalendar()"); 
     String strUriEvents = "content://calendar/events"; 
     Uri uri_calendar = Uri.parse(strUriEvents); 
     String str_column_name = "_id"; 
     String[] projection = {str_column_name}; 
     int columnIndex = 0; 
     String str_id = ""; 
     Vector<String> vector_id = new Vector<String>(); 
     int delRow = 0; 
     String where = ""; 
     try { 
      Cursor cursor = cr.query(uri_calendar, projection, null, null, null); 
      if(cursor.moveToFirst()){ 
       do{ 
        columnIndex = cursor.getColumnIndex(str_column_name); 
        str_id = cursor.getString(columnIndex); 
        vector_id.add(str_id); 
       }while(cursor.moveToNext()); 
      } 
      cursor.close(); 
      for(int i=0; i<vector_id.size(); i++){ 
       str_id = vector_id.get(i); 
       where = str_column_name+"="+str_id; 
       delRow = cr.delete(uri_calendar, where, null); 
       Log.i(TAG, "deleteAllCalendar(),delRow:"+delRow); 
      } 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      Log.e(TAG, "deleteAllCalendar(),Exception"); 
      e.printStackTrace(); 
     } 
     Log.i(TAG, "Out deleteAllCalendar()"); 
    } 
+0

它也在遊標中給null。 –

+0

@ unflagged.destination did U add READ_CALENDAR&\t WRITE_CALENDAR \t允許應用程序寫入(但不讀取)用戶的日曆數據。您的manifest.xml中的權限是 –

+0

是的,但遊標中的結果相同。 –

0

的問題是URI的一部分日曆權威。它在API級別14之前沒有標準化。如果您的目標級別爲8級或更高,Google代碼建議com.android.calendar,但手機制造商可能使用其他機構。在API 8之前,授權僅爲calendar(如前面的答案中所用)。

還記得授予寫入用戶日曆的權​​限。

當您刪除事件時,請記住刪除其擴展屬性,提醒和警報。以下是其路徑:

private static final String calendarPath = "calendars"; 
private static final String eventsPath = "events"; 
private static final String remindersPath = "reminders"; 
private static final String calAlertsPath = "calendar_alerts"; 
private static final String eventsExtPropPath = "extendedproperties"; 

隨着API級別14,這是標準化的,你可以從CalendarContract得到URI:

CalendarContract.Calendars.CONTENT_URI; 
    CalendarContract.Events.CONTENT_URI; 
    CalendarContract.Reminders.CONTENT_URI; 
    CalendarContract.CalendarAlerts.CONTENT_URI; 
    CalendarContract.ExtendedProperties.CONTENT_URI; 
+0

是的,我檢查了兩個URI,但總是光標給空 –

+0

你檢查了上述權限(日曆讀取現在)? – Stefan

+0

是的,但遊標返回null。 –