uni-app 启动扫码获取系统权限点击同意后app闪退
uni-app 启动扫码获取系统权限点击同意后app闪退
操作步骤:
启动扫码获取系统权限点击同意后app闪退
底部tabbar点击【库存】-》【实时库存】-》【右上角条形码】-》同意权限-》白屏闪退
预期结果:
正常使用扫码功能
实际结果:
同意权限后闪退,再打开app可正常使用
bug描述:
启动扫码获取系统权限点击同意后app闪退
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | 21H1 | HBuilderX |
| Android | 12 | |
| 华为 | ||
| meta40pro | ||
| vue | vue2 | |
| 云端 |
更多关于uni-app 启动扫码获取系统权限点击同意后app闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html
问题是必现的吗,系统是鸿蒙吗
更多关于uni-app 启动扫码获取系统权限点击同意后app闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html
用3.3.3版本打包的必现,退回3.2.16就正常了 是鸿蒙系统
回复 9***@qq.com: 找了些设备没能复现。能配合验证一下问题吗
回复 DCloud_Android_ST: 需要怎么做
回复 9***@qq.com: 私信你了
HX3.3.10+已修复
这是一个典型的权限请求后应用重启问题,在Android平台上比较常见。
主要原因: 当应用请求敏感权限(如相机权限)时,Android系统可能会触发应用进程重启。如果应用没有正确处理这种场景,就会表现为“闪退”(实际上是重启)。
解决方案:
-
检查权限请求时机
- 避免在应用启动或页面加载时立即请求权限
- 建议在用户明确触发扫码操作时再请求权限
-
使用条件编译处理平台差异
// #ifdef APP-PLUS // 在App端使用plus API请求权限 plus.android.requestPermissions(['android.permission.CAMERA'], function(result) { // 权限回调处理 }, function(error) { console.error('权限请求失败:' + error.message); }); // #endif -
优化页面生命周期处理
- 在
onLoad或onShow中检查权限状态 - 使用
uni.getSetting检查权限授权情况 - 已授权则直接调用扫码,未授权则显示引导提示
- 在
-
检查Manifest配置 确保
AndroidManifest.xml中已正确声明相机权限:<uses-permission android:name="android.permission.CAMERA" /> -
使用try-catch包装扫码调用
try { uni.scanCode({ success: function(res) { console.log('扫码结果:' + res.result); } }); } catch (error) { console.error('扫码失败:', error); }
临时验证方法: 在权限回调后添加延迟执行扫码操作,验证是否是时序问题:
setTimeout(() => {
uni.scanCode({...});
}, 500);

