Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如果安装了google goggles,通过intent使用Zxing时出现的问题_Android_Zxing_Google Goggles - Fatal编程技术网

Android 如果安装了google goggles,通过intent使用Zxing时出现的问题

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_

我使用以下代码从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
        }
    }
}
问题是,如果没有安装条形码扫描应用程序,并且用户有任何其他扫描应用程序,比如谷歌眼镜,我就无法得到想要的结果。这会破坏我的应用程序


有什么方法可以防止这种情况吗???

最好将条形码扫描仪集成到您的应用程序中。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说护目镜没有像预期的那样响应——有人有更多关于这方面的信息吗?仅供参考,我将此变更纳入了集成商代码: