Я хочу получить идентификатор, имя, день рождения, адрес из контактов Android.Я изменил URI (ContactsContract.CommonDataKinds, ContactsContract.Contacts и т. Д.) И смог получить адрес, но затем день рождения исчез.Во всяком случае, я пытался, я не могу найти решение, чтобы получить оба сразу.
public void getBirthdays() {
// get data from contacts
Uri uri = ContactsContract.Data.CONTENT_URI;
String[] projection = new String[]{
ContactsContract.CommonDataKinds.Event.CONTACT_ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Event.START_DATE,
ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS};
String selection =
ContactsContract.Data.MIMETYPE + "= ? AND " +
ContactsContract.CommonDataKinds.Event.TYPE + "=" + ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY;
String[] selectionArgs = new String[]{ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE};
Cursor cursor = getContentResolver().query(uri, projection, selection, selectionArgs, null);
int columnCount = cursor.getColumnCount();
cursor.moveToFirst();
for (int i = 0; i < columnCount; i++) {
Common.echo(cursor.getColumnName(i) + ", " + cursor.getString(i));
}
cursor.close();
}
выходной код выше:
I: contact_id, 14046
I: display_name, Magret XXXX
I: data1, XXXX-05-31
I: data1, XXXX-05-31
Поле «data1» в спискедважды, потому что START_DATE (день рождения) и FORMATTED_ADDRESS хранятся в одном и том же виртуальном столбце «data1».
Существует ли способ определения виртуальных имен столбцов в резольвере, например, эквивалентный SQL «SELECT col1 AS name1», col2 AS name2, col3, col4 ГДЕ ... "?