通过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
相关产品推荐
相关产品推荐

