取消运行时权限请求?

Ada*_*abb 5 java android android-6.0-marshmallow

在 Marshmallow 的运行时权限的 Android 文档中,以下代码注释指的是取消权限请求:

case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
        // If request is cancelled, the result arrays are empty.
        if (grantResults.length > 0
            && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Run Code Online (Sandbox Code Playgroud)

我无法确定如何实际取消权限请求,以便 grantResults 数组返回长度 == 0。请求权限的对话框仅允许用户允许或拒绝该请求,因此可以通过以下方式取消请求用户操作不明显。

然而,我运行了 Monkey,它至少成功完成了一次。

onRequestPermissionResult 的文档表明可以取消。

如何重现 grantResults 长度为 0 的情况(这表明这是一个已取消的请求)?(String[] grantResults 不为 null,但长度为 0)

Ada*_*abb 0

正在测试另一个应用程序的运行时权限,并设法相当简单地创建取消权限请求。

在屏幕旋转的情况下,Android 将取消当前正在显示的权限请求对话框,然后重新创建它。