Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 混淆应显示许可请求的基本原理_Android_Android 6.0 Marshmallow_Android Permissions - Fatal编程技术网

Android 混淆应显示许可请求的基本原理

Android 混淆应显示许可请求的基本原理,android,android-6.0-marshmallow,android-permissions,Android,Android 6.0 Marshmallow,Android Permissions,我对android M及以上版本的新权限模型有点好奇,尤其是“shouldshowRequestPermissionRegulation()方法”。 在: 为了帮助用户找到可能需要解释的情况,Android提供了一个实用方法shouldshowRequestPermissionRegulation()。如果应用程序以前请求过此权限,并且用户拒绝了该请求,则此方法返回true 注意:如果用户过去拒绝了权限请求,并在“权限请求系统”对话框中选择了“不再询问”选项,则此方法返回false。如果设备策略

我对android M及以上版本的新权限模型有点好奇,尤其是“shouldshowRequestPermissionRegulation()方法”。 在:

为了帮助用户找到可能需要解释的情况,Android提供了一个实用方法shouldshowRequestPermissionRegulation()。如果应用程序以前请求过此权限,并且用户拒绝了该请求,则此方法返回true

注意:如果用户过去拒绝了权限请求,并在“权限请求系统”对话框中选择了“不再询问”选项,则此方法返回false。如果设备策略禁止应用程序拥有该权限,则该方法还返回false

好的,用户肯定拒绝了权限。现在在同一页的代码snipet中:

// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
                Manifest.permission.READ_CONTACTS)
        != PackageManager.PERMISSION_GRANTED) {
    // Should we show an explanation?
    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
            Manifest.permission.READ_CONTACTS)) {

        // Show an expanation to the user *asynchronously* -- don't block
        // this thread waiting for the user's response! After the user
        // sees the explanation, try again to request the permission.

    } else {

        // No explanation needed, we can request the permission.

        ActivityCompat.requestPermissions(thisActivity,
                new String[]{Manifest.permission.READ_CONTACTS},
                MY_PERMISSIONS_REQUEST_READ_CONTACTS);

        // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
        // app-defined int constant. The callback method gets the
        // result of the request.
    }
}

混淆来自else区,它返回false,然后用户拒绝了该权限,这意味着我们一直要求用户提供他拒绝的权限,这与


我的问题是,;我们如何实现一个好的logique来处理所有这些问题?

“它返回false,然后用户拒绝了该权限”——或者您以前从未请求过该权限。“我们如何实现一个好的逻辑来处理所有这些?”——跟踪您之前是否请求过许可。如果您有,并且
showldRequestPermissionRegulation()
返回
false
,则您知道用户已永久拒绝该权限。在这种情况下,您可以在UI中执行一些操作,以反映您无法继续的事实,另外,您还可以为用户提供访问设置的选项,以手动授予权限。这不是一个直接的答案,但我最近对此做了一些工作,您可以在此处找到结果。这可能会给我一些见解我一直在寻找一种方法将用户发送到我的应用程序权限屏幕,但人们似乎表示这是不可能的,因为现在处理这种混乱的最好方法是将权限拒绝状态保持在共享首选项中,实现基本活动以自动执行权限请求也是一个非常好的主意。老实说,作为android用户,我实际上需要接受3次权限,第一次是在下载前在play store,第二次是在安装时,第三次或更多次取决于我使用的应用程序,这不是很烦人的android工程师…
shouldShowRequestPermissionRegulation
目前在SDK 25.0.1中被破坏了。它将返回false,即使它应该返回true。@Commonware永久拒绝是什么意思?如果用户拒绝了一次权限,则此api仅返回false。它不是永久性的。