uni-app 在vivo V2109/V2109(Android 13) 上无法拉起文件读写权限导致读取临时文件报错

uni-app 在vivo V2109/V2109(Android 13) 上无法拉起文件读写权限导致读取临时文件报错

项目信息 详情
产品分类 uniapp/App
PC开发环境 Mac
PC开发环境版本 15.6.1
HBuilderX类型 正式
HBuilderX版本 4.85
手机系统 Android
手机系统版本 Android 13
手机厂商 vivo
手机机型 V2109
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

  • 内部账户,有数据安全

预期结果:

  • 内部账户,有数据安全

实际结果:

  • 内部账户,有数据安全

bug描述:

uniapp 在vivo V2109/V2109(Android 13) 上无法拉起文件读写权限,导致读取临时文件报错。错误步骤

  1. 首先我用uni.canvasToTempFilePath 获取cavans中的内容存储为图片,(附件中已打印临时文件信息)
  2. 调用uni.uploadFile 上传文件 结果直接报错。


更多关于uni-app 在vivo V2109/V2109(Android 13) 上无法拉起文件读写权限导致读取临时文件报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 在vivo V2109/V2109(Android 13) 上无法拉起文件读写权限导致读取临时文件报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是Android 13权限策略变更导致的兼容性问题。Android 13对文件读写权限管理更加严格,特别是针对媒体文件的访问权限。

解决方案:

  1. 权限配置 在manifest.json中正确配置权限:
{
  "permissions": {
    "request": [
      "android.permission.READ_MEDIA_IMAGES",
      "android.permission.READ_MEDIA_VIDEO"
    ]
  }
}
  1. 动态权限申请 在调用canvasToTempFilePath前先申请权限:
// 检查并申请权限
uni.authorize({
  scope: 'scope.writePhotosAlbum',
  success: () => {
    // 权限获取成功,执行canvas转换
    uni.canvasToTempFilePath({
      // ...参数
    })
  },
  fail: () => {
    // 引导用户手动开启权限
    uni.showModal({
      content: '需要文件读写权限才能保存图片',
      confirmText: '去设置',
      success: (res) => {
        if (res.confirm) {
          uni.openAppAuthorizeSetting()
        }
      }
    })
  }
})
回到顶部