【问题标题】:Asking for READ_SMS asks for "send and view SMS messages"请求 READ_SMS 请求“发送和查看 SMS 消息”
【发布时间】:2015-09-20 15:51:24
【问题描述】:

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

这是我的代码:

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

发生了什么事? 谢谢!

【问题讨论】:

    标签: android permissions sms android-6.0-marshmallow


    【解决方案1】:

    发生了什么事?

    它按预期工作。

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

    缺点是权限组通常包含读写权限,所以即使你只请求读取,用户也会被告知你可以写。

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

    【讨论】:

    • 肯定有问题!但我不确定我是否像你一样阅读它......它说“READ_SMS 和 SEND_SMS”而不是 READ_SMS 或 SEND_SMS。所以,只有当你两者都做时,它才应该播下这条信息。我的应用只需要读取短信进行注册,为什么要向用户显示一条写短信?太疯狂了!
    • 所以,只是为了理解......他们总是会显示分组消息?太疯狂了。
    • @roiberg:“他们总是会显示分组消息?” -- 这就是Android 6.0 的方式,至少在当前的开发者预览版中是这样。请记住,这类似于用户在过去两年左右在 Play 商店中看到的情况。例如,如果我单击 Go SMS Pro 的“安装”,我会被告知它“使用以下一种或多种:SMS、MMS。可能会收取费用。”它不表示读取或写入能力。只有当用户点击“权限”链接时,他们才能获得完整的详细信息,这在 Android 6.0 中应该不会改变。
    • 在我看来,说“SMS”可以选择查看此 SMS 的内容,比说“Read and Write”而不选择查看其中的女巫要好 10 倍。哦,当我说“总是”时,我并不是指将来,而是指在所有情况下。截至今天,它是否在所有情况下都显示分组消息。
    • 谢谢!这是愚蠢的!如果我们能够控制要问的内容可能会好得多。但这不是你的错:)
    【解决方案2】:

    我用这个

     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
        }
    

    【讨论】:

    • 毫无意义...在低于 M 的版本上,当您请求权限时不会发生任何事情...他们只是跳转到回调
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多