uni-app中uni.scanCode调用导致黑屏无画面
uni-app中uni.scanCode调用导致黑屏无画面
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
无论什么版本安卓手机,首次完成apk安装后,用户在使用相册中的二维码完成第一次扫码后,再次触发扫码,摄像头无画面黑屏。需要退出程序,关掉后台,再次进入,才没有黑屏问题出现
HBuilderX 4.02.2024030621-alpha 已修复。
您好,经测试无法复现该问题,可否提供一下测试工程或代码方便排查
我给你apk可以吗
我的hbuilderX是这个版本 3.8.4.20230531;
回复 LPFFFF: apk看不到代码也不好排查呀
回复 JXWang: 就这段,我直接调用的。
回复 LPFFFF: apk也行,我先看看能不能找到些线索
再次触发扫码会走到fail里吗
回复 JXWang: 打包完或者真机调试就会出现。杀掉后台又好了。安卓9,13,14都试过
回复 JXWang: 不会,黑屏情况直接退出就会走fail
回复 JXWang: 黑屏情况下,相册还是能正常识别的,就相机没画面了
回复 JXWang: 可能跟二维码内容有关,如果二维码内容res.result不包含&,那么success里边的代码就会报错,可以在前边加一个判断,判断是否包含&,if(res.result.indexOf(’&’) !== -1) { }
回复 JXWang: 按道理试过很多二维码和手机都必现这个黑屏bug。那我再试下
回复 JXWang: 还是不行哦。安装完,相同二维码连续第二次,相机画面就出不来了。还是退出后重进就可以了
回复 LPFFFF: 控制台是否有报错
回复 JXWang: 没有,只有我console出来的那段信息
67202c5f5ed29e80dcd7cb8b0fa24546&u8700&u8700
回复 JXWang: 这是我二维码的内容
回复 LPFFFF: 稍等我下载个3.8.4版本的hbx试一下
回复 JXWang: 我刚刚试了 Hello uni-app的官方模板,也是同样的情况
回复 LPFFFF: 您是在开发阶段真机运行就会遇到这个问题,还是只有打包成apk后安装才有问题
回复 JXWang: 真机,和打包apk后都有。都是第一次安装后出现。Hello uni-app模板,我调扫码也有这问题。杀掉后台,再进就好了。
回复 JXWang: 您那边没有吗,或者我直接从哪边给你发个apk的包,您试试
回复 LPFFFF: manifest.json里有个app模块配置,看看是否勾选了扫码模块
回复 LPFFFF: 我这边用3.8.4试了一下,依旧没有复现
回复 JXWang: 我这边100%必现。我换了个电脑,下了最新的hbx,然后创建了hello uniapp那个项目,然后真机调试了下,也出现了。第一次扫相册二维码,退出去,再触发扫码,相机就无画面了。
回复 JXWang: 一定是第一次安装后
回复 LPFFFF: 感谢反馈,已确认该问题,正在排查
如果需要从相册选图,可以在调用 uni.scanCode 之前完成相册授权,比如进入首页的时候获取权限,https://ext.dcloud.net.cn/plugin?id=594 permision.judgeIosPermission(“photoLibrary”)
谢谢。但是连续扫码第一次都是正常的,第二次不行。相册始终可以可以访问识别的
回复 LPFFFF: 可以到应用设置里看看相机的权限是否设置成 仅在使用中允许
回复 JXWang: 确实是仅在使用中允许
回复 JXWang: 改成每次使用询问也没用。
问题已确认,感谢反馈,已加分
你好,请问这个问题有解决方案了吗?
这个基础uni.scanCode竟然还有这么多问题~
我也遇到这个问题, 很久之前就有了,
安卓手机第一安装都有这个情况
我也遇到这个问题, HbuilderX 3.96,
如果第一次打开扫码界面没有扫码, 按了返回按钮, 100% 复现
如果正常执行扫码, 则能再继续扫几个之后还是会出现, 概率不定
请问有解决方案了吗?
去插件市场使用扫码插件 不要用这个 这个问题很早就有了
在uni-app中使用uni.scanCode
调用扫码功能时,如果出现黑屏无画面的问题,可能是由于以下几个原因导致的。你可以根据以下步骤进行排查和解决:
1. 权限问题
- 问题描述:在某些设备上,如果没有正确获取摄像头权限,可能会导致黑屏。
- 解决方案:
- 确保在
manifest.json
中已经配置了摄像头权限:"permission": { "scope.userLocation": { "desc": "你的位置信息将用于小程序位置接口的效果展示" }, "scope.camera": { "desc": "需要使用你的摄像头进行扫码" } }
- 在调用
uni.scanCode
之前,可以通过uni.authorize
请求用户授权:uni.authorize({ scope: 'scope.camera', success() { uni.scanCode({ success(res) { console.log('扫码结果:', res.result); }, fail(err) { console.error('扫码失败:', err); } }); }, fail(err) { console.error('授权失败:', err); } });
- 确保在
2. 摄像头占用问题
- 问题描述:如果摄像头被其他应用占用,可能会导致黑屏。
- 解决方案:
- 确保在调用
uni.scanCode
之前,没有其他应用在使用摄像头。 - 可以在调用
uni.scanCode
之前,尝试关闭其他可能占用摄像头的应用。
- 确保在调用
3. 设备兼容性问题
- 问题描述:某些设备可能存在兼容性问题,导致摄像头无法正常启动。
- 解决方案:
- 尝试在其他设备上运行相同的代码,确认是否是设备问题。
- 如果是特定设备的问题,可能需要针对该设备进行特殊处理或联系设备厂商。
4. 代码逻辑问题
- 问题描述:代码逻辑错误可能导致扫码功能无法正常启动。
- 解决方案:
- 确保
uni.scanCode
的调用逻辑正确,例如在合适的生命周期或事件中调用。 - 检查是否有其他代码逻辑影响了扫码功能的正常执行。
- 确保
5. uni-app版本问题
- 问题描述:某些版本的uni-app可能存在bug,导致扫码功能异常。
- 解决方案:
- 尝试更新uni-app到最新版本,或者回退到一个已知稳定的版本。
- 检查uni-app官方文档或社区,看看是否有类似的问题和解决方案。
6. 真机调试
- 问题描述:在模拟器上运行时,扫码功能可能无法正常工作。
- 解决方案:
- 确保在真机上进行调试和测试,模拟器可能无法完全模拟摄像头的功能。
7. 错误处理
- 问题描述:如果扫码失败或出现异常,没有正确处理错误可能导致黑屏。
- 解决方案:
- 在
uni.scanCode
的fail
回调中添加错误处理逻辑,打印或处理错误信息:uni.scanCode({ success(res) { console.log('扫码结果:', res.result); }, fail(err) { console.error('扫码失败:', err); } });
- 在