Dodawanie kalendarza i wydarzeń w systemie Android 4.0
Chcę dodać wydarzenia kalendarza w urządzeniu z Androidem 4.0 i nowszym. Obecnie dodaję wydarzenia przy użyciu następującego kodu,
<code>if (android.os.Build.VERSION.SDK_INT <= 7 ) { Uri calendars = Uri.parse("content://calendar/calendars"); Cursor managedCursor = managedQuery(calendars, projection, null, null, null); if (managedCursor.moveToFirst()) { String calName; String calId; int nameColumn = managedCursor.getColumnIndex("name"); int idColumn = managedCursor.getColumnIndex("_id"); do { calName = managedCursor.getString(nameColumn); calId = managedCursor.getString(idColumn); Log.e("Calendar Id : ",""+calId+" : "+calName); } while (managedCursor.moveToNext()); if(calId != null) { try { Log.e("Calendar Id : ",""+calId+" : "+calName); ContentValues event = new ContentValues(); event.put("calendar_id", calId); event.put("title", summary); event.put("description", summary); event.put("eventLocation", ""); event.put("dtstart", startTime); event.put("dtend", endTime); event.put("allDay", allDayFlag); event.put("eventStatus", 1); event.put("visibility", 0); event.put("hasAlarm", 1); Uri eventsUri = Uri.parse("content://calendar/events"); Uri url = getContentResolver().insert(eventsUri, event); Log.e("Event Res : ",""+url); if(!url.equals("")) Main.showErrorDialog(this, "Event Successfully Added "); } catch (Exception kwse) { Log.e("Exception 1 kwse ",""+kwse.toString()); } } } } else { Uri calendars= Uri.parse("content://com.android.calendar/calendars"); Cursor managedCursor = managedQuery(calendars, projection, null, null, null); if (managedCursor.moveToFirst()) { String calName; String calId; int nameColumn = managedCursor.getColumnIndex("name"); int idColumn = managedCursor.getColumnIndex("_id"); do { calName = managedCursor.getString(nameColumn); calId = managedCursor.getString(idColumn); Log.e("Calendar Id : ",""+calId+" : "+calName); } while (managedCursor.moveToNext()); if(calId != null) { try { Log.e("Calendar Id : ",""+calId+" : "+calName); ContentValues event = new ContentValues(); event.put("calendar_id", calId); event.put("title", summary); event.put("description", summary); event.put("eventLocation", ""); event.put("dtstart", startTime); event.put("dtend", endTime); event.put("allDay", allDayFlag); event.put("eventStatus", 1); event.put("visibility", 0); event.put("hasAlarm", 1); Uri eventsUri = Uri.parse("content://com.android.calendar/events"); Uri url = getContentResolver().insert(eventsUri, event); Log.e("Event Res : ",""+url); if(!url.equals("")) Main.showErrorDialog(this, "Event Successfully Added "); } catch (Exception kwse) { Log.e("Exception 2 kwse ",""+kwse.toString()); } } } } </code>
Powyższy kod działa dobrze do wersji Android 3.0, ale zdarzenia nie są dodawane w Androidzie 4.0, jest to skarga, którą dostałem od mojego klienta. Nie mam urządzenia z Androidem 4.0, więc nie mogę go sprawdzić.
Dla urządzeń z Androidemsdk version 7 and below
używamy jako
<code>Uri calendars = Uri.parse("content://calendar/calendars"); </code>
gdzie jaksdk version above 7
używamy jako
<code>Uri calendars= Uri.parse("content://com.android.calendar/calendars"); </code>
Czy to samo dotyczy Androida 4.0, czy cokolwiek trzeba zmienić?