从android中的电话簿中选择多个联系人

Kar*_*k s 18 android android-contacts

我需要在android中选择电话簿中的联系电话/电子邮件.

我已经看到选择一个联系人并onActivityResult从此链接获取结果.

但我需要从电话簿中选择多个联系人.怎么做到这一点?

我不想制作我的自定义列表,有没有办法使用内置功能的机器人?

san*_*tar 2

似乎没有这样的“官方”方式。您的问题与How to select multiple contact with Android SDK基本相同,其中参考了自定义实现

如果您检查 AOSP Contacts 应用程序,文档中也不存在这种可能性。我从 AOSP Contacts 的来源中观察到的唯一一件事是以下提及(在com.android.contacts.activities.PeopleActivity中):

// TODO fix or remove multipicker code
//                else if (resultCode == RESULT_CANCELED && mMode == MODE_PICK_MULTIPLE_PHONES) {
Run Code Online (Sandbox Code Playgroud)

MMS 应用程序源代码中,您可以观察到以下内容(在ComposeMessageActivity中):

private void launchMultiplePhonePicker() {
    Intent intent = new Intent(Intents.ACTION_GET_MULTIPLE_PHONES);
    intent.addCategory("android.intent.category.DEFAULT");
    intent.setType(Phone.CONTENT_TYPE);
    // We have to wait for the constructing complete.
    ContactList contacts = mRecipientsEditor.constructContactsFromInput(true);
    int urisCount = 0;
    Uri[] uris = new Uri[contacts.size()];
    urisCount = 0;
    for (Contact contact : contacts) {
        if (Contact.CONTACT_METHOD_TYPE_PHONE == contact.getContactMethodType()) {
                uris[urisCount++] = contact.getPhoneUri();
        }
    }
    if (urisCount > 0) {
        intent.putExtra(Intents.EXTRA_PHONE_URIS, uris);
    }
    startActivityForResult(intent, REQUEST_CODE_PICK);
}
Run Code Online (Sandbox Code Playgroud)

该字段在ContactsContract.javaIntents.ACTION_GET_MULTIPLE_PHONES中可用,但我无法在 AOSP 中找到它的任何用法。所以,我认为这是一些死代码,或者是在一些封闭代码中处理的操作。我尝试以相同的方式从测试应用程序启动联系人选择,但只得到了关于没有应用程序来处理该操作的异常。

当然,供应商的联系人应用程序提供了此类功能(例如选择消息收件人),但最好不要依赖它们。