CalendarContract.Events._ID отсутствует в Android 5.0
Мое приложение запрашивает определенное событие в CalendarContract.Events
с помощью Events._ID
, Это работало хорошо, пока не попытался запустить его на устройстве 5.0, теперь я получаю исключение
01-12 17:28:50.525: E/Unknown Source(18499): android.database.sqlite.SQLiteException:
no such column: CalendarContract.Events._ID (code 1): ,
while compiling:
SELECT _id, account_type, title, organizer, description, eventLocation,
hasAlarm, calendar_id
FROM view_events
WHERE (lastSynced = 0 AND (CalendarContract.Events._ID=1))
Опрос всех столбцов в Events
действительно не возвращается _ID
, Любая идея, почему это было удалено или это ошибка? Кажется, я больше не могу найти, чтобы однозначно идентифицировать события.
Вот мой запрос:
String[] projection = new String[]{Events._ID, Events.ACCOUNT_TYPE, Events.TITLE,
Events.ORGANIZER, Events.DESCRIPTION, Events.EVENT_LOCATION, Events.HAS_ALARM,
Events.CALENDAR_ID};
Cursor cursor = context.getContentResolver().query(EVENTS_CONTENT_URI, projection,
"CalendarContract.Events._ID=" + eventId, null, null);
Спасибо за любую информацию!
1 ответ
Ответ @Andrew не правильный. Вы неправильно используете selectionClause
и selectionArgs
параметры.
Вот что вы делаете:
Cursor cursor = context.getContentResolver().query(EVENTS_CONTENT_URI, projection,
CalendarContract.Events._ID + "=" + eventId, null, null);
И вот что вы должны сделать:
Cursor cursor = context.getContentResolver().query(EVENTS_CONTENT_URI, projection,
CalendarContract.Events._ID + " = ?", new String[]{eventId}, null);
EventId должен быть передан в пределах selectionArgs
так что contentResolver может построить оператор запроса для вас, цепочки selectionArgs
и подставляя их в? символ в selectionClause
параметр.
Вопросу три года, но я надеюсь, что мой ответ может помочь кому-то еще.