我目前正在尝试将我的应用程序适应Android M的新权限模型。
我正在收集我所需的所有权限,然后运行。
Log.i("Permissions", "Requesting permissions: " + permissions);
requestPermissions(requiredPermissions.toArray(new String[requiredPermissions.size()]), requestCodeForPermissions);
requiredPermissions保存我需要的权限,例如android.permission.WRITE_EXTERNAL_STORAGE
。
由于我在logcat中有Log行,因此该例程肯定已执行:
08-07 12:52:46.469: I/Permissions(1674): Requesting permissions: android.permission.RECEIVE_BOOT_COMPLETED; android.permission.WRITE_EXTERNAL_STORAGE
但权限对话框从未显示过,更不用说是否调用了onRequestPermissionsResult()。
我做错了什么?根据我找到的一些教程,我没有漏掉任何东西。我只有模拟器进行测试,没有物理设备。这是来自设置的关于屏幕:图像
也许值得提到的是:如果我尝试从主屏幕打开已安装应用程序的概述,我只会得到launcher3已退出
。我不确定这是否可能相关。
有人知道为什么它没有显示吗?
WRITE_EXTERNAL_STORAGE
不是dangerous
权限,不需要手动请求。但这在v2中发生了改变,现在它像其他dangerous
权限(如CAMERA
)一样工作。请注意,RECEIVE_BOOT_COMPLETED
不是dangerous
权限,你不需要在运行时请求它。 - CommonsWare<uses-permission>
元素?新的运行时权限模型并没有消除<uses-permission>
元素的必要性,它只是为了在运行时请求某些权限组的权限而增加了额外的要求。 - CommonsWare