我是纸飞机
我是纸飞机
  • 发布:2023-12-29 16:38
  • 更新:2023-12-29 18:20
  • 阅读:419

【报Bug】targetSdkVersion升级30出现问题

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: window11

HBuilderX类型: 正式

HBuilderX版本号: 3.99

手机系统: Android

手机系统版本号: Android 12

手机厂商: 小米

手机机型: 红米 k30sUltra

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

const _rResult = await permissionSpecification.requestPermissions('WRITE_EXTERNAL_STORAGE'); //获取文件读取权限
if(_rResult !== 1) return;
gainFileChanges((res)=>{ //30之后这里就获取不到
if(res){
uni.showToast({
title:'获取地址成功'+res, //
icon:'none'
})
}else{
uni.showToast({
title:'获取地址失败'
})
}

            })

操作步骤:

使用云端证书打包测试,打开文件管理器获取文件地址,除了音频,视频,图片以外的其他文件多获取不到,手机使用标准基座测试没有问题

预期结果:

打开文件管理器获取文件地址,正常获取文件地址

实际结果:

只能获取图片,音频,视频的地址,其他文件地址获取不到

bug描述:

1.当targetSdkVersion升级到30之后,在获取权限“WRITE_EXTERNAL_STORAGE”的时候有所不同,就导致了在打开文件管理器获取文件路径的时候只能获取到相册的地址,其他地方的地址获取不到
targetSdkVersion 没有定义的时候,通过WRITE_EXTERNAL_STORAGE获取系统读取权限如下图1
但是打开文件管理器获取图片其他文件的时候就是正常的

targetSdkVersion设置了30之后,在通过WRITE_EXTERNAL_STORAGE获取系统读取权限如下图2
打开文件管理器获取图片的时候如图4,打开pdf,doc等其他文件的时候如图3

再通过文件管理器获取文件地址的时候,在设置了30之后,除了相册内部的地址可以获取,其他地方的文件地址多获取不到

2023-12-29 16:38 负责人:无 分享
已邀请:
DCloud_Android_ST

DCloud_Android_ST

targetSdkVersion = 30 android11+系统会强制限制应用操作文件的目录。仅支持app沙盒目录及部分公共目录。建议你尽早修改这种读取手机根目录资源的业务逻辑。

  • 我是纸飞机 (作者)

    那也就是说,现在只能获取沙盒目录和公共目录(相册)等文件,那其他的文件是不能获取了吗

    2024-01-02 09:55

  • DCloud_Android_ST

    回复 我是纸飞机: 是的,如果你要获取所有存储文件需要申请“所有文件访问权” 具体参考官方文档:https://developer.android.google.cn/training/data-storage/manage-all-files?hl=zh-cn

    2024-01-03 11:04

  • 我是纸飞机 (作者)

    回复 DCloud_Android_ST: 好的

    2024-01-05 10:08

要回复问题请先登录注册