4

我正在使用以下代码从 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
        }
    }
}

问题是如果没有安装条形码扫描仪应用程序并且用户有任何其他扫描应用程序,如谷歌护目镜,我没有得到想要的结果。这会破坏我的应用程序。

有什么办法可以防止这种情况发生吗?

4

2 回答 2

6

是的。调用Intent.setPackage()值为“com.google.zxing.client.android”。这将迫使它只接受来自 Barcode Scanner 的响应。

但是请注意,这将使其他应用程序无法响应,例如 Barcode Scanner+。

于 2011-11-08T12:36:19.977 回答
0

最好将条形码扫描仪集成到您的应用程序中。Zxing 是一个开源代码,您可以从这里下载。对于集成,请参考: http: //www.falatic.com/index.php/12/building-zxing-for-android-part-3-using-eclipse。我认为这将解决您的问题。

于 2011-11-08T12:33:34.353 回答