Android WRITE_EXTERNAL_STORAGE未授权。

3

我在清单文件中指定了WRITE_EXTERNAL_STORAGE权限,在应用程序中调用requestPermissions时,grantResult返回-1,表示未授予。然而,在设备设置中,该应用的存储权限显示为已开启。但是该应用程序不允许我进行写入操作。为什么授权请求失败,并且该应用程序认为权限被拒绝,但在设置中显示为正常?

requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, PICK_FROM_GALLERY);
.
.
.
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                    startActivityForResult(intent, RESULT_LOAD_IMAGE);
} else {
    //THIS IS WHERE I END UP WITH grantResults == -1
}

请展示你的代码以找出错误。 - Jimale Abdi
你能展示一下你的代码吗? - Sony
编辑了问题。 - user982687
grantresults[1]是什么意思?你在这里请求了2个权限。 - Sony
将两种权限都放在清单中,或者只请求您在清单中拥有的权限。requestPermissions()中列出的所有内容都需要出现在清单中。还要注意,您只需要WRITE_EXTERNAL_STORAGE,而不是这两个权限。 - CommonsWare
这是0。READ被授权,WRITE没有。 - user982687
2个回答

8
我找到了答案。显然,我从第三方库中引入的某些内容导致了清单合并。通过添加以下内容来解决问题:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="replace"/> 

我的问题解决了。

0
希望我的经历能对其他人有所帮助,我注意到在清单文件中的权限部分有一个空格,原本是 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE "/>,我将其改为 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>,问题解决了,没有做任何其他更改。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接