
本文介绍如何在使用 android studio 和 jetpack activity result api 完成二维码扫描后,自动启动新 activity,并传递扫描结果。
在基于 ActivityResultLauncher 的扫码流程中(例如使用 ZXing 或 ML Kit 等库),扫描完成后的回调逻辑位于 ActivityResultCallback 内。默认示例中弹出 AlertDialog 仅用于展示结果,而实际开发中我们通常需要跳转至下一个页面并携带数据——例如将扫描到的 URL、订单号或 JSON 字符串传递给目标 Activity。
以下是推荐的实现方式(Java):
ActivityResultLauncherbarLauncher = registerForActivityResult( new ScanContract(), result -> { if (result.getContents() != null) { // 创建 Intent,启动目标 Activity Intent intent = new Intent(QRScanActivity.this, NextTargetActivity.class); // 可选:将扫描内容作为额外参数传入 intent.putExtra("scanned_data", result.getContents()); // 启动 Activity(无返回值) startActivity(intent); // 可选:关闭当前扫码页(避免用户返回重复扫描) finish(); } } );
⚠️ 注意事项:
- 确保 NextTargetActivity.class 已在 AndroidManifest.xml 中正确声明;
- 若需接收数据,请在 NextTargetActivity 的 onCreate() 中调用 getIntent().getStringExtra("scanned_data") 获取;
- 如需等待目标 Activity 返回结果(例如扫码后编辑再确认),应改用 startActivityForResult()(已弃用)或升级为 ActivityResultLauncher
配合 setResult(),但本场景更推荐单向导航; - 若扫描频繁触发或存在并发风险,可在启动前加简单判空或防抖处理(如设置标志位 isNavigating = true)。
总结:替换 AlertDialog 为 startActivity() 是最直接、符合现代 Android 架构规范的做法;配合 intent.putExtra() 即可安全、清晰地完成数据流转,无需额外依赖或复杂封装。










