梁飞鸿
梁飞鸿
  • 发布:2024-04-24 18:41
  • 更新:2024-06-07 10:32
  • 阅读:594

【报Bug】targetSdkVersion填30,云打包后相册权限异常

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 4.08

手机系统: Android

手机系统版本号: Android 14

手机厂商: vivo

手机机型: IQOO 11s

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

targetSdkVersion填30后云打包

预期结果:

uni.chooseImage能正常使用

实际结果:

调用uni.chooseImage后出来的相册是空的

bug描述:

targetSdkVersion填30,云打包后,将APP安装到安卓14手机上,在app内允许相册权限,调用uni.chooseImage,打开的相册是空的

plus.navigator.checkPermission('android.permission.READ_MEDIA_IMAGES') 返回是authored,但实际上是禁止的

代码里有判断,安卓13及以上用的是READ_MEDIA_IMAGES权限,安卓13以下用的是READ_EXTERNAL_STORAGE权限

后来targetSdkVersion填34,重新打云包后。功能就正常了。而且看起来,存储权限那里也不一样,只有一个照片与视频(最后一张图片跟第三张图比较)

但是真机运行到标准基座,还是不行(targetSdkVersion填34打包的自定义基座,功能正常)

2024-04-24 18:41 负责人:无 分享
已邀请:
梁飞鸿

梁飞鸿 (作者)

急求解惑

  • DCloud_Android_zl

    我这边验证没问题,说一下你这边的复现流程吧,还有这个权限申请是在什么情况下触发的;或者提供一个安装包,说明一下复现步骤

    2024-04-30 15:57

  • 梁飞鸿 (作者)

    回复 DCloud_Android_zl: 你好,安装包下载地址和操作流程录屏都放在机密信息里了,请看下

    2024-04-30 16:20

  • DCloud_Android_zl

    回复 梁飞鸿: manifest.json 发一下吧

    2024-05-07 17:43

  • 梁飞鸿 (作者)

    回复 DCloud_Android_zl: 附件里发了

    2024-05-07 17:54

  • DCloud_Android_zl

    回复 梁飞鸿: 你用4.14重新打包试一下呢,我这边各种环境下目前无法复现这个问题,你看一下用最新的打包有没有问题。

    2024-05-07 18:02

  • DCloud_Android_zl

    回复 梁飞鸿: 麻烦升级到最新之后用传统打包重新提交一次,我这边现在环境无法复现,我这边测试的云打包也是没问题的

    2024-05-07 18:08

  • 梁飞鸿 (作者)

    回复 DCloud_Android_zl: 用4.14传统打包重新提交一次,还是一样的,相册是空的。好像必须是安卓14才有这问题

    2024-05-08 13:33

  • 梁飞鸿 (作者)

    回复 DCloud_Android_zl: 我这手机是vivo的,系统是安卓14

    2024-05-08 13:33

  • DCloud_Android_zl

    回复 梁飞鸿: 好的,我再看一下

    2024-05-08 16:18

  • DCloud_Android_zl

    回复 DCloud_Android_zl: 我这边实在是复现不了你这个问题,你要不把这个图片选择拆出来个示例发给我,我看一下。

    2024-05-09 16:36

  • 梁飞鸿 (作者)

    回复 DCloud_Android_zl: 你好项目在附件里,请看下

    2024-05-10 13:40

DCloud_Android_zl

DCloud_Android_zl

问题已经定位到了,因为android13上存储权限已经被废弃,高于android13的设备应该申请android.permission.READ_MEDIA_IMAGES。我看代码是因为你们自己实现了图片选择,在处理android 权限申请时,需要区分不同的android 版本申请不同的权限。或者可以使用我们提供的图片选择。

  • 梁飞鸿 (作者)

    你好,我代码里有判断啊,高于android13的申请的就是android.permission.READ_MEDIA_IMAGES

    2024-05-10 15:57

  • 梁飞鸿 (作者)

    permission.js文件里300多行有判断代码

    2024-05-10 16:04

  • 梁飞鸿 (作者)

    之所以没直接用uni.chooseImage,是因为应用市场要求调用权限之前要有权限说明。相机和相册是两个不同的权限,我们之前放在一起说明,上架时被拒审了。

    2024-05-10 16:15

  • DCloud_Android_zl

    回复 梁飞鸿: 我是直接替换的u-avatar-cropper.vue文件里的IMAGES_STORAGE,替换成android.permission.READ_MEDIA_IMAGES就正常请求权限了,你看一下是不是permission.js判断逻辑出了问题。

    2024-05-10 16:28

  • 梁飞鸿 (作者)

    回复 DCloud_Android_zl: 我试了,完全不行啊。你是不是之前先用android.permission.READ_EXTERNAL_STORAGE授权的啊,这个授权过了,那肯定是没问题啊

    2024-05-10 18:20

  • 梁飞鸿 (作者)

    回复 DCloud_Android_zl: 将u-avatar-cropper.vue文件里的IMAGES_STORAGE,替换成android.permission.READ_MEDIA_IMAGES,手机上app删掉,然后自定义基座真机运行。还是不行啊

    2024-05-10 18:27

  • 梁飞鸿 (作者)

    回复 DCloud_Android_zl: targetSdkVersion填34打包,功能就是正常,这种又是什么原因呢?

    2024-05-10 18:35

  • 梁飞鸿 (作者)

    回复 DCloud_Android_zl: 这个问题的bug描述我有更新,请看下

    2024-05-10 18:42

  • DCloud_Android_zl

    回复 梁飞鸿: 重新看了一下,如果应用targetSDK低于33的话,android.permission.WRITE_EXTERNAL_STORAGE也需要同时申请。也就是调用plus.android.requestPermissions需要传入两个权限。[“android.permission.READ_MEDIA_IMAGES”,"android.permission.WRITE_EXTERNAL_STORAGE"]

    https://developer.android.com/reference/android/Manifest.permission#READ_EXTERNAL_STORAGE

    2024-05-10 20:00

  • 梁飞鸿 (作者)

    回复 DCloud_Android_zl: 好的,感谢

    2024-05-11 09:51

传播星球

传播星球

请问解决了吗

  • 梁飞鸿 (作者)

    如果应用targetSDK低于33的话,android.permission.WRITE_EXTERNAL_STORAGE也需要同时申请。也就是调用plus.android.requestPermissions需要传入两个权限。[“android.permission.READ_MEDIA_IMAGES”,"android.permission.WRITE_EXTERNAL_STORAGE"]

    2024-06-27 15:00

要回复问题请先登录注册