0

カレンダーのエントリをすべて削除したい。カレンダーエントリを取得するためにこのクエリを使用しています

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

ただし、カーソルは毎回 null を返します。私もそれをチェックしましたが Uri uri = Uri.parse("content://calendar/events"); 、結果は同じです。

助けてください。

前もって感謝します。

4

2 に答える 2

0

//この要件を試すandroid:minSdkVersion="7"

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()");
    }
于 2012-10-22T13:44:26.527 に答える
0

問題は、URI の一部としての暦機関です。API レベル 14 より前では標準化されていません。レベル 8 以上をターゲットにする場合com.android.calendar、Google のコードでは推奨されていますが、電話の製造元は別の権限を使用している可能性があります。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 ではこれが標準化されており、次の URL から URI を取得できますCalendarContract

    CalendarContract.Calendars.CONTENT_URI;
    CalendarContract.Events.CONTENT_URI;
    CalendarContract.Reminders.CONTENT_URI;
    CalendarContract.CalendarAlerts.CONTENT_URI;
    CalendarContract.ExtendedProperties.CONTENT_URI;
于 2012-10-22T14:02:56.817 に答える