Каково местоположение календаря в Android 4.0?

Когда я разрабатывал APP, API которого 7 на моем Nexus S, не было никаких проблем при создании нового события в моем календаре.

Я использовал этот код, чтобы получить расположение календарей на моем телефоне:

cursor = cr.query(Uri.parse("content://com.android.calendar/calendars"), new String[]{ "_id", "displayname" }, null, null, null); 

Проблема возникла, когда я обновил свой Nexus S до Android ICS 4.0. Без изменения кода я получил ошибку. На логарифме я мог читать:

  • Нет такого столбца: displayname, db = / data / data / com.android.providers.calendar / databases / calendar.db

Конечно, курсор имеет значение null. Может быть, какие-либо изменения в базе данных календаря? Итак, я хотел бы знать, как я могу создавать новые события календаря, разрабатывающие приложение API 7 на Android 4.0

Благодаря 😉

Провайдер календаря является новым для Android 4.0, поэтому вы можете просмотреть документацию:

http://developer.android.com/guide/topics/providers/calendar-provider.html

Для версий до Froyo я знаю, что календарь был размещен в content://calendar/calendars , но с тех пор он изменился.

В Android 4.0 календарь находится в том же Uri, что и в Android 2.3. Поэтому я прикладываю свой код, если у других людей такая же проблема.

  public void addToCalendar(Context ctx, final String title, final String comment, final long dtstart, final long dtend) { final ContentResolver cr = ctx.getContentResolver(); Cursor cursor ; cursor = cr.query(Uri.parse("content://com.android.calendar/calendars"), new String[]{ "_id","calendar_displayName" }, null, null, null); /*if (Integer.parseInt(Build.VERSION.SDK) == 8 ) cursor = cr.query(Uri.parse("content://com.android.calendar/calendars"), new String[]{ "_id", "displayname" }, null, null, null); */ //Get all the calendar ids and name available in the phone if ( cursor.moveToFirst() ) { final String[] calNames = new String[cursor.getCount()]; final int[] calIds = new int[cursor.getCount()]; for (int i = 0; i < calNames.length; i++) { calIds[i] = cursor.getInt(0); calNames[i] = cursor.getString(1); cursor.moveToNext(); } //Creation of a new event in calendar whose position is 0 on the phone ContentValues cv = new ContentValues(); cv.put("calendar_id", calIds[0]); cv.put("title", title); cv.put("dtstart", dtstart ); cv.put("dtend", dtend); cv.put("eventTimezone","Spain"); cv.put("description", comment ); //Insertion on the events of the calendar cr.insert(Uri.parse("content://com.android.calendar/events"), cv); /*Uri newEvent ; if (Integer.parseInt(Build.VERSION.SDK) == 8 ) newEvent = cr.insert(Uri.parse("content://com.android.calendar/events"), cv); */ finish(); } cursor.close(); } 

У вас есть вся информация в: http://developer.android.com/guide/topics/providers/calendar-provider.html, как сказал Джон.