Android SDK 4.45 版本申请存储读写权限在uni-app中有问题
Android SDK 4.45 版本申请存储读写权限在uni-app中有问题
示例代码:
plus.android.requestPermissions(
["android.permission.READ_EXTERNAL_STORAGE","android.permission.WRITE_EXTERNAL_STORAGE"],
function(resultObj) {
console.log('结果:' + JSON.stringify(resultObj));
},
function(error) {
console.log('申请权限错误:' + error.code + " = " + error.message);
}
);
操作步骤:
- Android APP使用 SDK 4.45 后,执行代码示例
预期结果:
- 申请
android.permission.READ_EXTERNAL_STORAGE
和android.permission.WRITE_EXTERNAL_STORAGE
后显示系统的授权弹窗
实际结果:
- 申请
android.permission.READ_EXTERNAL_STORAGE
和android.permission.WRITE_EXTERNAL_STORAGE
后没有显示系统的授权弹窗
bug描述:
Android SDK 4.45 后打包出来的APP在vivo手机上运行,用户点击某个功能后申请 android.permission.READ_EXTERNAL_STORAGE
和 android.permission.WRITE_EXTERNAL_STORAGE
后没有显示系统的授权弹窗,直接返回的结果是
{
"granted":[],
"deniedPresent":[],
"deniedAlways":["android.permission.READ_EXTERNAL_STORAGE","android.permission.WRITE_EXTERNAL_STORAGE"]
}
改回原来旧版SDK后,同样的操作就正常
更多关于Android SDK 4.45 版本申请存储读写权限在uni-app中有问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
Android13废弃了这两个权限
更多关于Android SDK 4.45 版本申请存储读写权限在uni-app中有问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是Android权限策略变更导致的问题。从Android 11(API 30)开始,Google对存储权限做了重大调整:
-
在targetSdkVersion>=30时,READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限的行为发生了变化,系统会默认拒绝这些权限请求
-
解决方案:
- 降级targetSdkVersion到29或以下(临时方案)
- 改用新的存储访问方式:使用MediaStore API或Storage Access Framework
- 在manifest中添加android:requestLegacyExternalStorage="true"属性(仅适用于targetSdkVersion=29的过渡方案)
- 对于uni-app项目,可以修改项目下的manifest.json文件,添加以下配置:
"android": {
"targetSdkVersion": 29
}