我想删除所有日历条目。我正在使用此查询来获取日历条目
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");
但结果是一样的。
请帮忙。
提前致谢。
答案 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;