在我的安卓7应用程序targetSdkVersion 24中,我试图请求一个安卓许可WRITE_EXTERNAL_STORAGE。然而,当我运行这个应用程序时,它从来没有提示我需要这个权限,当我在我的设备上进入设置>应用程序> MyApp >权限时,我没有看到与WRITE_EXTERNAL_STORAGE相关的任何切换。
我是不是错过了什么步骤?
AndroidManifest.xml (完整文件on pastebin)
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />MyActivity.java
int permission = activity.checkSelfPermission(perm);
if (permission != PackageManager.PERMISSION_GRANTED)
activity.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);发布于 2016-12-02 02:45:02
在花了一些时间调查之后,我提出了一个关于这个问题的理论。
我的应用程序的AndroidManifest.xml中有一些依赖项:
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />如果SDK高于18,它会自动拒绝WRITE_EXTERNAL_STORAGE权限。这与我得到的问题一致;权限被拒绝,甚至不提示用户。
然后,我测试将此代码添加到我的应用程序AndroidManifest.xml中,试图覆盖lib依赖权限设置:
android:maxSdkVersion="25"然后,由于masSdkVersion上的合并冲突,它无法构建。这进一步证实了我对这个问题的怀疑;android:maxSdkVersion传播到了App模块。
在翻遍文档后,我找不到解决方案,但我有一个变通的办法。READ_EXTERNAL_STORAGE与WRITE_EXTERNAL_STORAGE在同一组中,文档称,请求同一组的权限将适用于整个组的其余权限。
因此,我在我的应用程序和AndroidManifest.xml上测试了请求读取权限,它是有效的,但我认为它很愚蠢。
当我找到合适的解决方法时,我会更新的。
https://stackoverflow.com/questions/40451572
复制相似问题