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

通过Intent选取联系人是否需要Marshmallow运行时权限?无权限可用求建议

关于使用ACTION_PICK选取联系人无需权限的合规性解答

嗨,我来帮你理清这个疑问哈!

你这段调用系统联系人选择器的代码:

val contactPickerIntent = Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI)
startActivityForResult(contactPickerIntent, RESULT_PICK_CONTACT)

确实不需要申请READ_CONTACTS权限就能正常获取联系人的姓名和手机号,而且这种用法是完全合规的,不用太担心!

为什么不需要权限?

  • 你是通过系统自带的联系人选择器让用户主动挑选联系人,而不是你的App直接访问整个联系人数据库。这种场景下,权限由系统联系人应用持有,用户选择后才把对应的数据返回给你的App,属于用户明确授权的行为,完全符合Android的隐私安全设计。
  • 从Android 6.0(API 23)引入运行时权限以来,这种通过系统Intent跳转选择单个联系人的方式,就被豁免了READ_CONTACTS权限要求——毕竟用户清楚知道自己在分享哪个联系人的信息,不存在偷偷读取隐私的风险。

给你的建议

  • 放心继续使用这种方式就好,这是官方推荐的获取单个联系人信息的最优方案,既省去了申请权限的繁琐流程,又能充分保护用户隐私。
  • 只有当你需要批量读取联系人、后台自动获取联系人数据这类场景时,才必须申请READ_CONTACTS权限,并且要在申请时向用户清晰说明权限的用途哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:17:19