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_STORAGEandroid.permission.WRITE_EXTERNAL_STORAGE 后显示系统的授权弹窗

实际结果:

  • 申请 android.permission.READ_EXTERNAL_STORAGEandroid.permission.WRITE_EXTERNAL_STORAGE 后没有显示系统的授权弹窗

bug描述:

Android SDK 4.45 后打包出来的APP在vivo手机上运行,用户点击某个功能后申请 android.permission.READ_EXTERNAL_STORAGEandroid.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对存储权限做了重大调整:

  1. 在targetSdkVersion>=30时,READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限的行为发生了变化,系统会默认拒绝这些权限请求

  2. 解决方案:

  • 降级targetSdkVersion到29或以下(临时方案)
  • 改用新的存储访问方式:使用MediaStore API或Storage Access Framework
  • 在manifest中添加android:requestLegacyExternalStorage="true"属性(仅适用于targetSdkVersion=29的过渡方案)
  1. 对于uni-app项目,可以修改项目下的manifest.json文件,添加以下配置:
"android": {
    "targetSdkVersion": 29
}
回到顶部