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
相关产品推荐
相关产品推荐

