У меня есть приложение, которое может получить почтовый адрес из контактной информации на устройстве.Я получаю информацию для адреса, почтового индекса, города и т. Д., Используя API контактов, используя код, подобный приведенному ниже.Затем я отображаю адрес в отдельных строках, и пользователь может принять его или изменить при желании.
String where = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
String[] params = new String[]{id, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE};
Cursor addrCur = getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, where, params, null);
...
while(addrCur.moveToNext()) {
String street = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET));
String city = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY));
String state = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION));
String postalCode = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE));
String country = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY));
...
}
addrCur.close();
Это хорошо работало с Android 2.2 / 2.3, но я заметил, что в 3.x и выше весь возвращаемый адрес может быть отформатирован как одна строка с разрывами строк в поле STREET.Это происходит, когда контакт / адрес создан на устройстве;если я синхронизирую контакт из Gmail, адрес будет получен правильно (я подозреваю, что информация о синхронизации сохраняется в правильных полях).Я не вижу способа получить отдельные элементы данных (улица, почтовый индекс и т. Д.) Для этих типов адресов.Это возможно?Нужно ли использовать новый API?