如何从联系人列表中启用多项选择

Posted

技术标签:

【中文标题】如何从联系人列表中启用多项选择【英文标题】:How to enable multiple selection from contact list 【发布时间】:2020-04-06 00:48:42 【问题描述】:

我可以让用户从联系人列表中选择 1 个联系人,它给了我用户的姓名和电话号码,但我需要让用户从同一个联系人列表中选择多个联系人。

这是我的代码。

val intent = Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI)
startActivityForResult(intent, CONTACTS_RESULT_CODE)

OnActivityResult()

    if(requestCode == CONTACTS_RESULT_CODE)

        var phoneNo: String? = null
        var name: String? = null

        val uri: Uri = data!!.getData()
        val cursor: Cursor = getContentResolver().query(uri, null, null, null, null)

        if (cursor.moveToFirst()) 
            val phoneIndex: Int = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)
            val nameIndex: Int = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)
            phoneNo = cursor.getString(phoneIndex)
            name = cursor.getString(nameIndex)
            Log.e("onActivityResult()", "$phoneIndex $phoneNo $nameIndex $name")


            val invitesModel = InvitesModel()
            invitesModel.contactName= name
            invitesModel.contactNumber= phoneNo.replace(" ", "")
            contactsList?.add(invitesModel)
        
        cursor.close()



      

【问题讨论】:

【参考方案1】:

android 中没有使用 Intent 获取多个联系人的官方方法。

实现这一点的唯一两种方法是重复调用单个 phone-picker 直到用户发出信号,他们选择了足够的联系人,或者从用户那里获得 READ_CONTACTS 许可,并在您的自己的应用程序。

话虽如此,我在您的代码中看到您正在尝试实现邀请流程,直到最近才可以使用 Firebase Invites 从 Firebase 轻松获得,但现在不推荐使用 Firebase Dynamic Links 与用例inviting users to your app,请参阅 migration 文档以了解其工作原理。

【讨论】:

以上是关于如何从联系人列表中启用多项选择的主要内容,如果未能解决你的问题,请参考以下文章

从联系人列表中选择多个号码

如何使用 android studio 从联系人列表中选择联系人号码?

从选择列表中创建新联系人的选项

如何从联系人列表中获取姓名

从多个联系人号码列表中选择一个联系人号码

从联系人列表中选择联系人并为该联系人选择特定的电子邮件