在生产线组装时一个界面上可能需要同时扫多个码来绑定产品信息,所以想到用自定义的requestCode
来区分,代码如下:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if (result != null) {
if (result.getContents() == null) {
Toast.makeText(this, "你已经放弃了扫描", Toast.LENGTH_LONG).show();
} else {
switch (requestCode) {
case REQUEST_CODE_IMEI:
etImei.setText(result.getContents());
break;
case REQUEST_CODE_ASSET_NO:
etAssetNo.setText(result.getContents());
break;
default:
etDeviceNo.setText(result.getContents());
}
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
private void scanQR(int requestCode) {
IntentIntegrator integrator = new IntentIntegrator(this);
integrator
.setCaptureActivity(CustomCaptureActivity.class)
.setRequestCode(requestCode)
.setDesiredBarcodeFormats(IntentIntegrator.ALL_CODE_TYPES)
.setPrompt("请对准要扫描的码")
.setCameraId(0)
.setBeepEnabled(true)
.setBarcodeImageEnabled(false)
.setOrientationLocked(true)
.initiateScan();
}
这时IntentResult
返回的是null,解决方法就是在使用parseActivityResult
方法时去掉requestCode
参数, 即:
IntentResult result = IntentIntegrator.parseActivityResult(resultCode, data);
参考: https://github.com/journeyapps/zxing-android-embedded/issues/382
来源:oschina
链接:https://my.oschina.net/jenqz/blog/4303309