gpt4 book ai didi

android - API 26+ : WRITE_EXTERNAL_STORAGE permission is always denied

转载 作者:IT老高 更新时间:2023-10-28 23:20:40 29 4
gpt4 key购买 nike

我已将我的应用程序切换到目标 API 27,现在无法授予它 WRITE_EXTERNAL_STORAGE权限——grantResult总是 -1 .

我的应用需要此权限,因为它不使用应用私有(private)外部存储空间(doesn't require WRITE_EXTERNAL_STORAGE 从 API 19 开始)。

我知道在 API 26 中有 behavior changes for permissions .然而这并不能解释我的问题。

我请求两个 READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE标准方式的权限:

ActivityCompat.requestPermissions(activity, new String[] {
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
}, requestCode);

(这两个权限都通过 list 中的 <uses-permission 声明)。

对话框出现,我点击“允许”:

enter image description here

但是在onRequestPermissionsResult里面回调我收到 -1 (拒绝)WRITE_EXTERNAL_STORAGE (和 0 (已授予)为 READ_EXTERNAL_STORAGE )。

结果不应该是 0因为我已经请求并且大概同意了这两个?

我已尝试请求 WRITE_EXTERNAL_STORAGE单独,但在这种情况下,对话框根本不会出现。

更多细节:我刚刚检查了 build/intermediates/manifests/full/debug 中的合并 list 并注意到 WRITE_EXTERNAL_STORAGE权限具有属性 android:maxSdkVersion="18" (我的 list 中没有这样的属性)。这可能是因为我的应用程序有 minApiVersion=21 ,但我不确定。

最佳答案

沿着这条线的某个地方,你正在捡起 android:maxSdkVersion="18"属性。我的猜测是它来自图书馆。当您编辑自己的 list 时,请检查 Android Studio 中的“合并 list ”选项卡。它将详细说明是什么促成了各种元素和属性。

android:maxSdkVersion具有删除您的<uses-permission>的效果更高版本的 Android SDK 上的元素,至少在运行时权限的工作方式方面。

由于所有版本都需要此权限,因此添加 tools:remove="android:maxSdkVersion"<uses-permission>元素应该恢复 android:maxSdkVersion="18"并满足您的期望。

关于android - API 26+ : WRITE_EXTERNAL_STORAGE permission is always denied,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49709463/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com