You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native上传非QR码图片时APP崩溃问题及修复需求

React Native QR码扫描模块崩溃修复:非QR码图片触发onFail逻辑

问题根源

上传非QR码图片时,原生端解析后返回空的LinkedList<Result>,但代码直接调用get(0)触发IndexOutOfBoundsException,且错误走入onSuccess分支而非onFail。

修复步骤

1. 修改Android原生代码(核心修复)

找到QR码解析后的回调处理代码,添加结果非空判断:

// 替换原解析后直接调用onSuccess的逻辑
LinkedList<Result> results = scanner.decodeMultiple(image);
if (results != null && !results.isEmpty()) {
    // 解析到有效QR码,走成功回调
    onSuccess(results.get(0).getText());
} else {
    // 未识别到QR码,触发失败回调
    onFail("未识别到有效QR码");
}
  • 关键:必须先校验results是否为空,避免空指针或索引越界异常
  • 确保onFail方法能正确将错误信息传递到React Native JS层(用Promise则触发reject,用回调则调用错误参数)

2. JS端完善错误处理

在调用原生扫描模块的地方,实现错误捕获逻辑并弹出提示:

import { Alert } from 'react-native';
import NativeQRScanner from './NativeQRScanner'; // 你的原生模块引用

// 调用图片扫描
const handleScanImage = async (imagePath) => {
  try {
    const qrText = await NativeQRScanner.scanImage(imagePath);
    // 处理有效QR码的业务逻辑
    console.log("QR码内容:", qrText);
  } catch (error) {
    // 非QR码或解析失败时弹出提示
    Alert.alert("提示", error.message || "无法识别该图片中的QR码");
  }
};

3. 边界测试

验证以下场景确保修复生效:

  • 上传随机截图、空白图片
  • 上传模糊/损坏的QR码图片
  • 上传非QR码的其他条码图片

内容的提问来源于stack exchange,提问作者Khadija

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 18:57:08