Ahoj, potřeboval bych poradit s načtením detailu kontaktu ze systémové databáze. Prošel jsem kupu diskuzí a všude je to v podstatě stejné:
Uri uriData = data.getData();
String where = ContactsContract.Data._ID + " = "
+ uriData.getLastPathSegment()
+ " AND ContactsContract.Data.MIMETYPE = '"
+ StructuredPostal.CONTENT_ITEM_TYPE
+ "'";
Log.d(TAG, "where: " + where);
String[] projection = new String[] {
StructuredPostal.STREET,
StructuredPostal.CITY,
StructuredPostal.POSTCODE,
StructuredPostal.REGION,
StructuredPostal.COUNTRY};
Cursor cursor = getActivity().getContentResolver().query(ContactsContract.Data.CONTENT_URI,
projection,
where,
null,
null);
if (cursor.moveToFirst()) {
mEtStreet.setText(cursor.getString(0));
mEtCity.setText(cursor.getString(1));
mEtPostcode.setText(cursor.getString(2));
mEtRegion.setText(cursor.getString(3));
mEtCountry.setText(cursor.getString(4));
} else {
Log.e(TAG, "nic nenalezeno");
}
cursor.close();
Log pro "where" je např.:
where: _id = 14 AND ContactsContract.Data.MIMETYPE = 'vnd.android.cursor.item/postal-address_v2'
To ID je získáno z intentu:
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, 1);
V adresáři mám testovací 3 kontakty, pouze lokální v telefonu. Každý kontakt má adresu, ale pokaždé jiný typ (doma, práce, jiné). Problém je, že kurzor je vždy prázdný. Chybu tam nikde nevidím a tento postup byl většinový.