删除日历条目

时间:2012-10-22 13:33:55

标签: android android-intent

我想删除所有日历条目。我正在使用此查询来获取日历条目

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");但结果是一样的。

请帮忙。

提前致谢。

2 个答案:

答案 0 :(得分: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()");
    }

答案 1 :(得分: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,这是标准化的,您可以从CalendarContract获取URI:

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