uniapp 安卓存储权限如何配置
在uniapp开发安卓应用时,如何正确配置存储权限?需要在manifest.json里添加哪些权限声明?是否需要动态申请权限?遇到用户拒绝授权后该怎么处理?求具体的代码示例和配置步骤。
        
          2 回复
        
      
      
        在 manifest.json 中配置安卓存储权限:
{
  "app-plus": {
    "distribute": {
      "android": {
        "permissions": [
          "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
          "<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>"
        ]
      }
    }
  }
}
注意:Android 11+ 需使用分区存储,建议改用 uni.saveFile 等 API 替代直接文件操作。
在 UniApp 中配置安卓存储权限,需在项目配置文件 manifest.json 中声明权限,并处理动态权限申请(适用于 Android 6.0 及以上系统)。以下是具体步骤:
1. 配置静态权限
在 manifest.json 的 "app-plus" -> "distribute" -> "android" 节点下添加权限声明:
{
  "app-plus": {
    "distribute": {
      "android": {
        "permissions": [
          "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
          "<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>"
        ]
      }
    }
  }
}
2. 动态权限申请(关键步骤)
在代码中调用以下方法请求用户授权:
// 检查权限状态
uni.authorize({
  scope: 'scope.writePhotosAlbum', // 存储权限对应的 scope
  success() {
    console.log("已授权");
  },
  fail() {
    // 引导用户手动开启或再次请求
    uni.showModal({
      content: "需要存储权限保存文件",
      success: (res) => {
        if (res.confirm) {
          uni.openSetting(); // 打开设置页面
        }
      }
    });
  }
});
3. 注意事项
- Android 10+ 适配:若使用 uni.saveFile等 API,部分目录需使用沙箱路径(如uni.env.USER_DATA_PATH),无需存储权限。
- 权限范围:scope.writePhotosAlbum适用于相册;文件操作需使用uni.saveFile或uni.downloadFile等封装 API。
- 真机测试:务必在真机调试,模拟器可能权限行为不一致。
总结
- 静态声明权限。
- 运行时动态申请。
- 适配高版本 Android 的存储限制。
按照以上步骤即可正确配置和使用存储权限。
 
        
       
                     
                   
                    

