Uygulamamı, kullanıcının Takvimine hatırlatıcı eklemesini sağlamaya çalışıyorum. Kod, olayın eklenmeden önce takvimde bulunup bulunmadığını kontrol etmek için title
ve start date
numaralarını arar (çoğaltmaları olmamak için). Benim sorunum şudur: Olayı Takvim'den manuel olarak (Takvim kullanarak) kaldırırsam, olay Takvim'den kaybolur (Tüm Takvimlerimi görüntülüyorum ve bunu Takvim Uygulaması'nda göremiyorum) ancak DataBase'den göremiyorum. Anlamadığım bir başka şey ise, olayları programsal olarak kaldırmaya çalıştığım ama yine de kaldırılmadıkları. İşte Takvimden silinme olayları silinmiyor
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);
}
Neden etkinlik takvimi Uygulama çıkardıktan sonra hala mevcut ve neden bile programlı kaldırmak mümkün değilim?
Güncelleme Sorun ekleme ve silme için calendar_id=1
kullanmak durumunda olduğunu. Diğer calendar_id
s iyi çalışıyor.
Güncelleştirme 2 Samsung Galaxy S1 üzerindeki kodu test ettik ve çalışıyor. Samsung Galaxy S3'te bir sorun var gibi görünüyor (nerede sorunum var, S-planner uygulamasında bir hata olduğunu düşünüyorum)
Uygulamanızı yeniden başlatırsanız, silinmiş etkinlikler yine de görünür mü? – NathanTempelman
Evet, telefonu yeniden başlatsam bile, Takvim Uygulaması'nda görünmezler, ancak yine de ContentResolver'da görünürler.query() –
@Mohamed_AbdAllah Bu durumun geçerli olup olmadığını kesin olarak söyleyemem ama tür ve müzik ile ilgili sorgularda benzer sorunlar görülebilir. Onun bir hata olup olmadığını anlamanız gerekir =/ – Warpzit