要求READ_SMS要求"发送和查看SMS消息"

roi*_*erg 4 permissions sms android android-6.0-marshmallow

我的应用只需要使用"READ_SMS"权限.我的问题是在Android 6.0上当我需要使用新的权限系统时,它会向用户询问"发送和查看SMS消息".

这是我的代码:

ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.READ_SMS}, READ_SMS_PERMISION_REQ);
Run Code Online (Sandbox Code Playgroud)

到底是怎么回事?谢谢!

Com*_*are 5

到底是怎么回事?

它按预期工作.

当我们通过请求权限时requestPermissions(),用户接受或拒绝权限.因此,如果你的数组有,READ_SMS并且SEND_SMS尽管有两个权限,用户只需要在运行时权限对话框中接受一件事.或者,如果你只有READ_SMS在这里(和用户授予的权限),但后来叫checkSelfPermission()SEND_SMS,你会被告知,你拥有了它,因为用户授予整个短信权限组.

缺点是权限组通常包含读写权限,因此即使您只是要求读取,也会告诉用户您可能会写入.

我的猜测是,目标是保持接受/拒绝决策的粒度.requestPermissions()如果这个读取与写入问题成为用户或开发人员的问题,那么获取权限而非群组的事实意味着Google有权在未来的Android版本中改变主意.