0

现在,我正在尝试从配置文件中获取用户地址。

我的源代码在这里

String[] projection ={ ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS };

Cursor mCursor = getContentResolver().query(Uri.withAppendedPath(
        ContactsContract.Profile.CONTENT_URI,
        ContactsContract.Contacts.Data.CONTENT_DIRECTORY),
        projection,
        null,
        null,
        null);

虽然它成功获取了用户配置文件,但“mCursor”从用户配置文件中获取所有信息。那么有人知道从个人资料中获取地址吗?

4

1 回答 1

0

我找到了如何自己获得它。“vnd.android.cursor.item/postal-address_v2”是地址的mimetype。它的类型代表HOME、WORK、OTHER和CUSTOME。下面的源代码可以从 Profile 中获取地址。但请注意,只有 OS4.00 及更高版本具有 Profile 类。

//Colums(address and its type)  
String[] projection = {
    ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS,
    ContactsContract.CommonDataKinds.StructuredPostal.TYPE,
};

profileCursor = null;

try{
    //make cursor
    profileCursor = getContentResolver().query(
    Uri.withAppendedPath(
    ContactsContract.Profile.CONTENT_URI,
    ContactsContract.Contacts.Data.CONTENT_DIRECTORY),
    projection,
    ContactsContract.CommonDataKinds.StructuredPostal.MIMETYPE + " =? ",
    // This is the mymetype of address
    new String[]{"vnd.android.cursor.item/postal-address_v2"},
    null);

}catch(NoClassDefFoundError e){
    e.printStackTrace();
}
于 2013-10-09T03:23:18.033 回答