我想讓我的應用程序添加提醒到用戶的日曆。該代碼搜索title
和start date
,以檢查日曆在添加日曆之前是否已存在(以免重複)。我的問題是:如果我手動從日曆中刪除事件(使用日曆),事件從日曆中消失(我正在查看所有日曆,無法在日曆應用程序中看到它),但不從數據庫中看到。我不明白的另一件事是我試圖通過編程方式刪除事件,但仍然沒有刪除它們。從日曆中刪除事件不被刪除
這裏是我的代碼片段:
Cursor cur = null;
ContentResolver cr = getContentResolver();
String calUriString = "content://com.android.calendar/events";
Uri cal=Uri.parse(calUriString);
String[] EVENT_PROJECTION=new String[]{"calendar_id","title","dtstart","_id"};
String selection = "((" + "calendar_id" + " = 1) AND ("
+ "title" + " LIKE '"+name+"') AND ("
+ "dtstart" + " = "+String.valueOf(c.getTimeInMillis())+"))";
cur = cr.query(cal, EVENT_PROJECTION, selection, null, null);
boolean found=false;
if(cur!=null)
if(cur.moveToFirst()){
DatabaseUtils.dumpCursor(cur);/*Just to view my results (which always include the deleted events)*/
do{
if(cur.getString(1).equals(name)){
/*I use this part to try to remove the events manually*/
Uri eventUri =ContentUris.withAppendedId(cal, Long.valueOf(cur.getString(3)));
String reminderUriString = "content://com.android.calendar/reminders";
Uri remUri =Uri.parse(reminderUriString);
cr.delete(remUri, "event_id="+cur.getString(3), null);
cr.delete(eventUri, null, null);
/*It is not working also*/
Toast.makeText(getApplicationContext(), "Event already exists in Calendar", Toast.LENGTH_LONG).show();
found=true;
//break;
}
}while(cur.moveToNext());
}
cur.close();
if(found){
/*Event is found even if I remove it from the Calendar manually and even if I remove it programmatically using cr.delete()*/
}
else{
values.put("calendar_id",1); /*I am using the same Calendar that I query, or is this wrong*/
values.put("title", name);
/*More values are added*/
Uri calendarUri = cr.insert(cal, values);
long eventID = Long.parseLong(calendarUri.getLastPathSegment());
String reminderUriString = "content://com.android.calendar/reminders";
ContentValues reminderValues = new ContentValues();
reminderValues.put("event_id", eventID);
reminderValues.put("minutes", 5);
reminderValues.put("method", 1);
Uri reminderUri = getApplicationContext().getContentResolver().insert(Uri.parse(reminderUriString), reminderValues);
}
爲什麼事件仍然存在從日曆應用程序刪除它們後爲什麼我不能夠,甚至編程方式刪除呢?
更新 問題是隻有當我使用calendar_id=1
插入和刪除。其他calendar_id
工作正常。
更新2 我測試了三星Galaxy S1上的代碼,它工作正常。這似乎是三星Galaxy S3(我有我的問題,我認爲這是一個在S規劃應用程序中的錯誤)的問題
如果你重新啓動你的應用程序,被刪除的事件是否仍然出現在它中? – NathanTempelman 2013-02-22 22:41:38
是的,即使我重新啓動手機,它們也不會出現在日曆應用程序中,但仍會出現在ContentResolver中。查詢() – 2013-02-23 13:43:48
@Mohamed_AbdAllah我不能肯定地說,如果是這樣的話,但類似的問題可以看出與流派和音樂的查詢。你需要弄清楚它是否有bug =/ – Warpzit 2013-03-06 17:59:28