如何从ActivityResultLauncher中提取二维码扫描结果
提取ZXing扫描二维码数据的正确方式
你当前的问题是没有用ZXing提供的解析方法处理返回结果,直接打印Intent对象自然拿不到有效数据。可以通过IntentIntegrator.parseActivityResult()方法解析扫描结果,具体修改如下:
修改你的ActivityResultCallback实现:
activityResultLaucher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() { @Override public void onActivityResult(ActivityResult result) { // 用ZXing的解析方法处理返回结果 IntentResult scanResult = IntentIntegrator.parseActivityResult(result.getResultCode(), result.getData()); if (scanResult != null && scanResult.getContents() != null) { // scanResult.getContents()就是二维码的内容 String qrCodeData = scanResult.getContents(); Toast.makeText(getApplicationContext(), qrCodeData, Toast.LENGTH_LONG).show(); } } });
说明:
IntentIntegrator.parseActivityResult()是ZXing专门用来解析扫描返回结果的工具方法,它会从返回的Intent中提取出二维码的文本内容。- 解析后得到的
IntentResult对象中:getContents():返回二维码的文本数据(即你需要提取的内容)getFormatName():返回二维码的格式(比如QR_CODE)
这样修改后,就能正确提取到扫描得到的二维码数据了。
内容的提问来源于stack exchange,提问作者Touhidul Islam
相关产品推荐
相关产品推荐

