使用选择器访问联系人姓名,电话和电子邮件,不得弃用代码

时间:2016-10-28 05:29:16

标签: android

我正在尝试使用默认的联系人选择器,因此用户可以选择一个联系人,我可以使用姓名,电话号码和电子邮件填写表单。

我正在使用以下选择器

Intent intent = new Intent(Intent.ACTION_PICK,  ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, GlobalVar.GET_CONTACTS_REQUEST_CODE);

问题在于我获得活动结果。我在SO上看到的所有内容都是不推荐使用的API,例如managerQuery(从2010年开始回答)。当我进入Android网站时,它会讨论用联系人详细信息填充listview。

我很困惑。我不想建立自己的列表视图。我想使用默认选择器,只需获取上述信息。

任何帮助,工作示例或至少指针?

谢谢

1 个答案:

答案 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/