我正在使用以下代码从Zing调用条形码扫描程序应用程序
public Button.OnClickListener mScan = new Button.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, 0);
}
};
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
String contents = intent.getStringExtra("SCAN_RESULT");
String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
// Handle successful scan
} else if (resultCode == RESULT_CANCELED) {
// Handle cancel
}
}
}
问题是如果没有安装条形码扫描仪应用程序,并且用户有任何其他扫描应用程序,如谷歌护目镜,我没有得到所需的结果回来.这打破了我的应用程序.
有什么办法可以阻止这个吗?
解决方法:
是.使用值“com.google.zxing.client.android”调用Intent.setPackage().这将迫使它仅接受条形码扫描仪的响应.
但请注意,这将使其他应用无法响应,例如条形码扫描器.