用户从他们的联系人中选择一个联系人,这是回调函数(我正在跳过onActivityResult(...)
代码,它工作正常):
private User addUserFromContactData(Intent data) {
Uri contactData = data.getData();
// Cursor loader to query contact information
CursorLoader cl = new CursorLoader(this);
String[] projection = { ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Email.DATA };
cl.setProjection(projection);
cl.setUri(ContactsContract.CommonDataKinds.Email.CONTENT_URI);
cl.setSelection(ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?");
cl.setSelectionArgs(new String[] { contactData.getLastPathSegment() });
// Execute query and get results from cursor
Cursor c = cl.loadInBackground();
final int nameIndex = c.getColumnIndex(projection[0]);
final int emailIndex = c.getColumnIndex(projection[1]);
User user = null;
if (c.moveToFirst()) {
user = new User();
user.setName(c.getString(nameIndex));
user.setEmail(c.getString(emailIndex));
}
c.close();
return user;
}
此方法适用于具有电子邮件地址的联系人。但是当我选择一个没有它的联系人时,找不到任何结果。电子邮件对我来说是可选的,所以如果没有电子邮件,我只会使用联系人姓名。好像我只选择带有电子邮件地址的联系人。
谁能帮我?也许我需要查询两次,第一次获取姓名,第二次获取可选电子邮件?
多谢你们。