要求 READ_SMS 要求 "send and view SMS messages"

Asking for READ_SMS asks for "send and view SMS messages"

我的应用程序只需要使用 "READ_SMS" 权限。 我的问题是,在 Android 6.0 上,当我需要使用新的权限系统时,它会向用户询问 "send and view SMS messages"。

这是我的代码:

ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.READ_SMS}, READ_SMS_PERMISION_REQ);

这是怎么回事? 谢谢!

What is going on?

它按预期工作。

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

缺点是权限组经常覆盖读写权限,所以即使你只要求读,用户也会被告知你可以写。

我的猜测是 objective 是为了降低 accept/deny 决策的粒度。 requestPermissions() 采用权限而不是组这一事实意味着 Google 有权在 Android 的未来版本中改变主意,如果这个读与写问题成为用户的问题或开发人员。

我正在用这个

 if (BuildUtil.isAndroidM()) {
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_SMS) !=
                PackageManager.PERMISSION_GRANTED &&
                ActivityCompat.checkSelfPermission(this, Manifest.permission.RECEIVE_SMS) !=
                        PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, PermissionUtil.sms(),
                    PermissionUtil.PERMISSION_SMS);
        } else {
            // TODO
        }
    } else {
        // TODO
    }