【发布时间】:2015-01-22 14:10:28
【问题描述】:
我正在实现一个电话簿应用程序,我希望用户能够从 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(" ") 函数将它们分开。
提前谢谢你!
【问题讨论】: