在android上使用ContactsContract api从联系人处获取邮政地址

mud*_*dit 4 sdk android contacts contactscontract

我正在使用ContactsContract api intent来显示活动中的所有联系人.此意图返回联系人的ID.我需要获得此联系人的邮政地址.

这是我用于显示联系人的代码:

Intent intent = new Intent(Intent.ACTION_PICK); intent.setType(ContactsContract.Contacts.CONTENT_TYPE); startActivityForResult(intent, PICK_CONTACT);

我在onActivityResult函数中得到了结果.

请帮忙,我该怎么做.

Tho*_*nvv 10

在onActivityResult中,首先获取联系人ID并查询ContactsContract.Data以获取相关数据:

// get the contact ID

Cursor cursor = getContentResolver().query(data.getData(), null, null, null, null);
cursor.moveToFirst();
long id = cursor.getLong(cursor.getColumnIndex(ContactsContract.Contacts._ID));
cursor.close();

// get the data package containg the postal information for the contact
cursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI, 
    new String[]{ StructuredPostal.STREET,
        StructuredPostal.CITY,
// add more coluns from StructuredPostal if you need them
        StructuredPostal.POSTCODE},
        ContactsContract.Data.CONTACT_ID + "=? AND " +
            StructuredPostal.MIMETYPE + "=?",
        new String[]{String.valueOf(id), StructuredPostal.CONTENT_ITEM_TYPE},
        null);


Street = cursor.getString(cursor.getColumnIndex(StructuredPostal.STREET));
Postcode = cursor.getString(cursor.getColumnIndex(StructuredPostal.POSTCODE));
City = cursor.getString(cursor.getColumnIndex(StructuredPostal.CITY)));
// etc. 
Run Code Online (Sandbox Code Playgroud)