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.saveFileuni.downloadFile 等封装 API。
  • 真机测试:务必在真机调试,模拟器可能权限行为不一致。

总结

  1. 静态声明权限。
  2. 运行时动态申请。
  3. 适配高版本 Android 的存储限制。

按照以上步骤即可正确配置和使用存储权限。

回到顶部