我正在尝试使用默认的联系人选择器,因此用户可以选择一个联系人,我可以使用姓名,电话号码和电子邮件填写表单。
我正在使用以下选择器
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, GlobalVar.GET_CONTACTS_REQUEST_CODE);
问题在于我获得活动结果。我在SO上看到的所有内容都是不推荐使用的API,例如managerQuery(从2010年开始回答)。当我进入Android网站时,它会讨论用联系人详细信息填充listview。
我很困惑。我不想建立自己的列表视图。我想使用默认选择器,只需获取上述信息。
任何帮助,工作示例或至少指针?
谢谢
答案 0 :(得分:0)
如下所示使用它。
private static final int PICK_CONTACT = 1000;
Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,
ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
startActivityForResult(contactPickerIntent, PICK_CONTACT);
在ActivityResult中:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {startActivityForReslut
switch (requestCode) {
case PICK_CONTACT:
contactInfo(data);
break;
}
} else {
Log.e("MainActivity", "Failed to pick contact");
}
}
选择联系信息的功能:
private void contactInfo(Intent data) {
Cursor cursor = null;
try {
String phoneNo = null ;
String name = null;
Uri uri = data.getData();
cursor = getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
int phoneIndex =cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
int nameIndex =cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
phoneNo = cursor.getString(phoneIndex);
name = cursor.getString(nameIndex);
Toast.makeText(this,name + "," +phoneNo,Toast.LENGTH_LONG).show();
} catch (Exception e) {
e.printStackTrace();
}
}
参考:http://stackandroid.com/tutorial/contact-picker-using-intent-android-tutorial/