Я использую приведенный ниже код для извлечения курсора для событий и контактов, и он отлично работает для событий с указанным годом. К сожалению, события, для которых установлены только день и месяц, не возвращаются этим запросом.
Я установил эти даты в Google Контактах для некоторых дней рождения контактов, и мне интересно, нужно ли мне использовать RawContacts а не ContactsContract, чтобы получить эти значения?
Обновление : Похоже, что события, введенные в телефон без года, извлекаются. Не извлекаются только события, добавленные через http://www.google.com/contacts . Я вижу эти события в приложении «Контакты» - они отображаются как что-то вроде - 05-23
.
String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
Event.CONTACT_ID,
Event.START_DATE,
Event.TYPE
};
Cursor c = mContext.getContentResolver().query(
ContactsContract.Data.CONTENT_URI,
projection,
ContactsContract.Data.MIMETYPE + "= ?",
new String[] { Event.CONTENT_ITEM_TYPE },
Event.START_DATE);
c.moveToFirst();
int nameIndex = c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
int dateIndex = c.getColumnIndex(Event.START_DATE);
String name, date;
while (c.moveToNext()) {
name = c.getString(nameIndex);
date = c.getString(dateIndex);
Log.d(TAG, "Event for " + name + " is " + date);
}
c.close();