4***@qq.com
4***@qq.com
  • 发布:2025-07-30 23:27
  • 更新:2025-08-01 14:49
  • 阅读:168

安卓13及以上部分安卓 uni.chooseImage相册无内容

分类:uni-app

现象描述:
VIVO(Y36 安卓13) OPPO(PJU110 安卓14)这两款机型,用户授权后,打开相册无图片可选,但是手动关闭某一项权限后(系统会提示,关闭会连带其他权限一起关闭,如:照片和视频、音频文件),在手动开启,权限后,相册中就有图片可以选择。有懂的大佬能帮忙看一下嘛?到底是权限没弄好,还是bug。

我查阅部分咨询,有些地方说还需要加一个文件和文档权,但是这个权限没办法用户获取,我实际打包之后,这个权限调用的时候都是true,只有基础基座测试才会走进false的逻辑中,包括自定义基座也是true。下列有我权限列表的截图(安卓14


// manifest.json 权限部分  
"<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>",  
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",  
"<uses-permission android:name=\"android.permission.MANAGE_EXTERNAL_STORAGE\"/>",  
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",  
"<uses-permission android:name=\"android.permission.READ_MEDIA_AUDIO\" />",  
"<uses-permission android:name=\"android.permission.READ_MEDIA_IMAGES\" />",  
"<uses-permission android:name=\"android.permission.READ_MEDIA_VIDEO\" />"  

// 手机端获取权限部分代码  我是用uni.addInterceptor 监听chooseImage的  

function isManageAllFilesGranted() {  
    try {  
        const Environment = plus.android.importClass('android.os.Environment');  
        const File = plus.android.importClass('java.io.File');  
        const testFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath());  
        const canRead = testFile.canRead();  
        console.log('Environment.isExternalStorageManager()', Environment.isExternalStorageManager());  
        console.log('testFile.canRead()', canRead);  
        if (canRead) return true;  
        return Environment.isExternalStorageManager();  
    } catch (err) {  
        console.error('checkManageAllFilesPermission failed:', err)  
        return false  
    }  
}  

async function chooseMedia({ type = 'image' }) {  
    try {  
        const cameraStatus = await permisionUtil.requestAndroidPermission('android.permission.CAMERA')  

        const mediaPermission = osAndroidAPILevel >= 33  
            ? type === 'video'  
                ? 'android.permission.READ_MEDIA_VIDEO'  
                : 'android.permission.READ_MEDIA_IMAGES'  
            : 'android.permission.READ_EXTERNAL_STORAGE';  

        const mediaStatus = await permisionUtil.requestAndroidPermission(mediaPermission);  

        const audioStatus = osAndroidAPILevel >= 33  
            ? await permisionUtil.requestAndroidPermission('android.permission.READ_MEDIA_AUDIO')  
            : 1;  

        let hasManageAllFiles = true;  
        if (osAndroidAPILevel >= 30) {  
            hasManageAllFiles = isManageAllFilesGranted();  
            if (!hasManageAllFiles) {  
                setModalContent('我们需要您授予“文件和文档访问”权限,才能正常访问相册内容,请前往设置开启权限。');  
            }  
        }  
        console.log('摄像头使用权:cameraStatus',cameraStatus)  
        console.log('图库使用权:imageStatus',mediaStatus)  

        console.log('音频使用权:audioStatus',audioStatus)  

        console.log('文件文档使用权:hasManageAllFiles',hasManageAllFiles)  

        if (cameraStatus === 1 && mediaStatus === 1 && audioStatus === 1 && hasManageAllFiles) {  
            return 1;  
        } else {  
            return -1;  
        }  
    } catch (e) {  
        console.error(`${type} 权限申请异常`, e);  
        return 0;  
    }  
}  

chooseImage: () => chooseMedia({ type: 'image' })  
chooseVideo: () => chooseMedia({ type: 'video' })
2025-07-30 23:27 负责人:DCloud_Android_zl 分享
已邀请:
DCloud_Android_zl

DCloud_Android_zl

发一下安装包和manifest.json,我这边云打包之后再Android15的设备上没有问题。

  • 4***@qq.com (作者)

    下载地址和manifest.json私信您了。我这边也是部分机型有这个情况,红米K70 安卓14、VIVOIQOO 安卓10这两部手机正常

    2025-07-31 19:05

  • 4***@qq.com (作者)

    目前主要是这种情况,以安卓14举例:

    云打包后的APP,使用相册API前,我获取权限(摄像头、照片与视频、音频文件)允许APP需要的权限后,就拉起相册,相册内始终没图片,去权限管理查看,括号内的三个权限全是允许状态的。然后手动关闭相册权限会提示会一起关闭掉音频文件权限,随即打开权限,重新打开APP,相册就有图片了。

    且我也试过,只要成功手动打开过一次权限,后面几遍手动拒绝了,APP重新获取到权限,也可以正常使用相册

    2025-07-31 19:11

  • DCloud_Android_zl

    回复 4***@qq.com: 你出一个简单的能复现的示例给我一下吧,我这边按照你的配置都走了一遍,没能复现问题。

    2025-08-01 16:55

  • 4***@qq.com (作者)

    回复 DCloud_Android_zl: 您好,我将相关文件更新在帖子上了,以防你能看不到,也给您私信了一份,分别是简化demo的压缩包,和我复现的视频文件。目前该情况,主要是出现在部分老旧机型,公司买的测试开发手机。(大多都是VIVO OPPO 公司的开发手机都基本是这个品牌,开发者24年10月红米K70 Ultra允许权限后打开相册是正常的 )

    2025-08-01 19:56

CD_小C

CD_小C - CD_PUSH

解决了吗!同一个问题

  • 4***@qq.com (作者)

    等解决了,我会回复的,这个问题好抽象,并不是全部机型会这样,仅是个别机型会 ┭┮﹏┭┮

    2025-08-01 15:35

  • CD_小C

    我也遇到相关问题了,也是上面那个官方,正在排查

    2025-08-01 15:40

  • 4***@qq.com (作者)

    回复 CD_小C: 我看了看你的帖子,目前似乎是只有安卓13及以上的VIVO OPPO这两家的部分机型有这个情况。我提供了相关的视频,让官方排查,希望能发现问题

    2025-08-01 19:58

  • CD_小C

    回复 4***@qq.com: 哎。难受

    2025-08-04 10:50

要回复问题请先登录注册