贝利信息

如何在 Android Studio 中实现扫码后跳转到新 Activity

日期:2026-01-07 00:00 / 作者:聖光之護

本文介绍在 android 应用中使用 ml kit 或 zxing 等扫码库完成扫描后,如何通过 intent 启动新 activity,并安全传递扫描结果,避免空指针与上下文失效问题。

在 Android 开发中,扫码(如 QR Code)通常借助 ActivityResultLauncher 配合 ScanContract(常见于 ZXing Android Embedded 或自定义封装)实现异步扫描回调。你当前的代码已成功捕获扫描结果并弹出 AlertDialog,下一步只需将该回调逻辑替换为标准的 Activity 跳转流程。

✅ 正确跳转方式(推荐写法)

ActivityResultLauncher barLauncher = registerForActivityResult(
    new ScanContract(),
    result -> {
        if (result != null && result.getContents() != null) {
            // 创建 Intent,启动目标 Activity
            Intent intent = new Intent(QRScanActivity.this, NextTargetActivity.class);
            // 可选:将扫描内容作为参数传递
            intent.putExtra("scanned_data", result.getContents());
            // 使用显式 Intent 启动(确保目标 Activity 已在 AndroidManifest.xml 中声明)
            startActivity(intent);
            // 可选:关闭当前扫码页(防止用户返回重复扫描)
            finish();
        } else {
            // 处理空结果(如用户取消扫描、光线不足识别失败等)
            Toast.makeText(QRScanActivity.this, "No valid co

de scanned", Toast.LENGTH_SHORT).show(); } } );

⚠️ 注意事项

? 进阶建议

如需在跳转时携带更多上下文(如扫描时间、原始图像缩略图或格式类型),可扩展 Intent 参数:

intent.putExtra("scanned_format", result.getFormatName()); // 如 "QR_CODE"
intent.putExtra("scan_timestamp", System.currentTimeMillis());

最终,一次成功的扫码不应仅止于展示结果——合理利用扫描数据驱动页面流转,是构建流畅用户体验的关键一步。