You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中启动选取联系人的ActivityResultLauncher时,launch方法需传入何种参数?

解决ActivityResultLauncher启动PickContact时的参数问题

嘿,我之前也碰到过一模一样的困惑,其实这个问题的核心是搞懂ActivityResultContracts.PickContact()的输入类型要求就行啦。

问题根源

PickContact()这个ActivityResultContract对应的输入类型是Void?——也就是说它本身不需要任何实际的输入参数来启动联系人选择器,但launch()方法的签名强制要求传入该类型的参数,所以你只需要传一个符合Void?类型的值,也就是null就可以了。

修改后的可运行代码

把你的点击事件代码改成下面这样就能正常触发联系人选择器了:

private val getContact = registerForActivityResult(ActivityResultContracts.PickContact()) { uri: Uri? ->
    Log.d(TAG, uri.toString())
}

// ...

button.setOnClickListener {
    getContact.launch(null) // 传入null即可满足Void?的参数要求
}

额外说明

你要是去看ActivityResultContracts.PickContact的源码会发现,它的createIntent方法根本不会用到传入的输入参数,所以这个null只是用来满足方法的类型约束,完全不会影响联系人选择器的功能。

内容的提问来源于stack exchange,提问作者domartynov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 14:12:35