从Contact Application检索联系人详细信息

时间:2015-01-22 14:10:29

标签: android contacts

我正在实施电话簿应用程序,我希望用户能够从已安装在Android中的联系人应用程序中将联系人导入我的应用程序。问题是我无法检索从列表中选择的联系人的电子邮件的值。

我使用以下代码打开联系人应用程序

Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts"));
pickContactIntent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE); // Show user only contacts w/ phone numbers
startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST);

在onActivityResult中我使用以下代码来获取我从联系人列表中选择的联系人的数据:

Uri contactUri = data.getData();

        String[] projection = {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER,ContactsContract.CommonDataKinds.Email.ADDRESS};

        Cursor cursor = getContentResolver()
                .query(contactUri, projection, null, null, null);
        cursor.moveToFirst();

        int column = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
        String number = cursor.getString(column);

        int column1 = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.ADDRESS);
        String email= cursor.getString(column1);

        int column2 = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
                String fullName = cursor.getString(column2);

但“email”变量包含与联系人电话号码相同的值。可能有什么不对?

此外,游标的Phone.DISPLAY_NAME列包含联系人的完整名称。(firstName,middleName和lastName)。有没有办法分别获得这些字段?现在我使用split(“”)函数来分隔它们。

提前谢谢!

1 个答案:

答案 0 :(得分:0)