uni-app barcode卡死及uni.scanCode首次获取相册权限后返回扫码页面卡死问题

发布于 1周前 作者 zlyuanteng 来自 Uni-App

uni-app barcode卡死及uni.scanCode首次获取相册权限后返回扫码页面卡死问题

产品分类:

uniapp/App

PC开发环境操作系统:

Windows

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

win11

HBuilderX类型:

正式

HBuilderX版本号:

3.98

手机系统:

Android

手机系统版本号:

Android 14

手机厂商:

华为

手机机型:

iphone se

页面类型:

vue

vue版本:

vue2

打包方式:

云端

项目创建方式:

HBuilderX

示例代码:

<barcode id='1' autostart='true' class="barcode" ref="barcode" background="rgb(0,0,0)" frameColor="#1C86EE"  
    scanbarColor="#1C86EE" @marked="success1" @error="fail1"></barcode> 
setPhoto() {
    let _this = this;
    if (!_this.fils) {
        _this.fils = true;
    } else {
        _this.fils = false;
    }
    uni.chooseImage({
        count: 1, //默认9
        sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
        sourceType: ['album'], //从相册选择
        success: function(res) {
            console.log(JSON.stringify(res.tempFilePaths));
        },
        complete: function(res) {
            _this.fils = false;
            // _this.toStart();  
        }  
    });  
},

操作步骤:

  • 使用barcode选择autostart自动扫码

预期结果:

  • 跳转页面返回不卡死,相册返回不卡死

实际结果:

  • 全部都卡死,除非退出扫码页面重新进入

bug描述:

barcode使用autostart后进入扫码页面是可以正常扫码的,如果使用uni.navigateTo跳转页面后返回将会卡死,使用相册在相册选择其中一张图片后返回页面也会卡死


3 回复

每次返回都没有调用到相机权限应该是这个问题


这个问题我新建一个hello uniapp的项目也是一样可以复现,每次都将hbuilderx的缓存给清除就都可以复现

在使用 uni-app 进行开发时,可能会遇到 uni.scanCode 扫码功能在获取相册权限后返回扫码页面卡死的问题,或者在使用条形码扫描功能时出现卡死的情况。以下是一些可能的原因和解决方案:

1. 获取相册权限后返回扫码页面卡死问题

可能原因:

  • 权限获取后的回调处理不当:在获取相册权限后,可能没有正确处理回调,导致页面卡死。
  • 页面生命周期问题:在获取权限后,页面可能没有正确重新加载或初始化。

解决方案:

  • 确保权限获取后的回调处理正确:在获取相册权限后,确保正确处理回调,并重新初始化扫码页面。
  • 检查页面生命周期:确保在获取权限后,页面能够正确重新加载或初始化。
uni.authorize({
  scope: 'scope.album',
  success: () => {
    // 权限获取成功,重新初始化扫码页面
    uni.scanCode({
      success: (res) => {
        console.log('扫码结果:', res.result);
      },
      fail: (err) => {
        console.error('扫码失败:', err);
      }
    });
  },
  fail: (err) => {
    console.error('获取相册权限失败:', err);
  }
});

2. 条形码扫描功能卡死问题

可能原因:

  • 扫码组件或API使用不当:可能在使用 uni.scanCode 或相关扫码组件时,参数设置不当或未正确处理回调。
  • 设备兼容性问题:某些设备可能存在兼容性问题,导致扫码功能卡死。

解决方案:

  • 检查扫码API的使用:确保 uni.scanCode 的参数设置正确,并正确处理成功和失败的回调。
  • 处理设备兼容性问题:在出现卡死问题时,尝试在不同的设备上进行测试,或者使用其他扫码库进行替代。
uni.scanCode({
  onlyFromCamera: false, // 是否只允许从相机扫码
  scanType: ['barCode', 'qrCode'], // 扫码类型
  success: (res) => {
    console.log('扫码结果:', res.result);
  },
  fail: (err) => {
    console.error('扫码失败:', err);
  }
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!