我正在与Zxing库一起解码android的QR码。我可以得到QR码。现在,我想了解它返回的QR码类型(URL,Phone Nubmer,纯文本等)。我试图探索ResultParser课,但我无法使用它。
已更新:我使用ResultParser类删除了错误的过程。
这是我的onActivityResult代码。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
contents = intent.getStringExtra("SCAN_RESULT");
// check the contents strings here
// Need to get actual return type of result
if (contents.contains("https:") || contents.contains("http:")) {
aBarcode.setBarcode_Type(WEB_URL);
Intent browserIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse(contents));
startActivity(browserIntent);
} else {
aBarcode.setBarcode_Type(PLAIN_TEXT);
Toast.makeText(getApplicationContext(), contents,
Toast.LENGTH_LONG).show();
}
barcodeList.add(aBarcode);
// show previous barcodes detail
showBarcodeReaderHistory();
// Handle successful scan
} else if (resultCode == RESULT_CANCELED) {
Log.e("Barcode Result", "Result canceled");
}
}
}
已更新:我打开ScanActivity,如:
// start scan after button click
btnScanQRCode.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
Intent intent = new Intent(
"com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, 0);
}
});
希望,我向所有人清楚。等待你的敲门声。 谢谢。
答案 0 :(得分:2)
你不应该自己从返回的Intent
的额外内容中获得结果。
相反,这样做:
IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
然后,您可以通过IntentResult
获取所需的所有数据。具体来说,要获取类型,您可以致电scanResult.getFormatName()
答案 1 :(得分:2)
您可以修改库的CaptureActivity
以将QR码类型添加到您的活动中。
在CaptureActivity
中有一个方法名handleDecodeExternally
,它将数据返回给您的活动添加此行
intent.putExtra("QR_TYPE", getString(resultHandler.getDisplayTitle()));
活动结束前。
然后将此值提供给您的活动onActivityResult
String type = intent.getStringExtra("QR_TYPE");
最后你有二维码的类型。
谢谢
在com.google.zxing.client.android
包下的zixing库项目中,有一个名为CaptureActivity
的活动。在该活动上,method
名为handleDecodeExternally
,其中简要显示条形码的内容,然后处理条形码扫描器外的结果。在该方法中,您有意图将您在QR上找到的数据发送到您的活动。
在离开此活动之前添加该行,添加之后将是这样的 -
// ------------- Mine Added -------------------
intent.putExtra("QR_TYPE", getString(resultHandler.getDisplayTitle()));
// --------------------------------------------
sendReplyMessage(R.id.return_scan_result, intent);
我想你会在sendReplyMessage(R.id.return_scan_result, intent);
的650 +/-行找到这个CaptureActivity
。谢谢