Android 如果安装了google goggles,通过intent使用Zxing时出现的问题
我使用以下代码从Zing调用条形码扫描仪应用程序Android 如果安装了google goggles,通过intent使用Zxing时出现的问题,android,zxing,google-goggles,Android,Zxing,Google Goggles,我使用以下代码从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_
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
}
}
}
问题是,如果没有安装条形码扫描应用程序,并且用户有任何其他扫描应用程序,比如谷歌眼镜,我就无法得到想要的结果。这会破坏我的应用程序
有什么方法可以防止这种情况吗???最好将条形码扫描仪集成到您的应用程序中。Zxing是一个开源代码,您可以从中下载。对于集成,请参考以下内容:。我想这会解决你的问题。是的。使用值“com.google.zxing.client.android”调用
Intent.setPackage()
。这将迫使它只接受来自条形码扫描仪的响应
但是请注意,这将使其他应用程序无法响应,如条形码扫描仪+。我们不建议像这样集成代码。无论如何,没有必要解决此问题。您可以迭代应用程序的结果并检查应用程序的白名单,然后在
Intent.setPackage()中使用任何有效的包名。
谢谢,这很有效,理想情况下应该是一个白名单??条形码扫描器,条形码扫描器+还有什么?就这些。com.google.zxing.client.android、com.srowen.bs.android和com.srowen.bs.android.simple。我将相应地重写集成代码。对于那些感兴趣的人来说,如果你真的想强制谷歌眼镜,那么这行代码就是“intent.setPackage”(“com.Google.android.apps.defect”)`。我仍然鼓励使用zxing版本。这是一个伟大的项目。OP说护目镜没有像预期的那样响应——有人有更多关于这方面的信息吗?仅供参考,我将此变更纳入了集成商代码: