Android zxing库bacrcode扫描程序强制库在当前应用程序上打开

时间:2013-07-29 06:21:59

标签: android zxing

我有一个Android应用程序,我已经集成了zxing条形码扫描仪。它工作正常,但只有一个问题: 我有另一个条形码扫描仪,所以当我的应用程序打电话给条形码扫描仪时,它总是要求我选择应用程序。

我只想强迫zxing打开我的应用程序。

任何解决方案?

3 个答案:

答案 0 :(得分:2)

您如何调用Zxing条形码扫描仪?如果您将其集成到您的应用程序中,则不应使用intentPicker让用户选择一个。你应该可以直接调用它。 但如果没有,你可以做类似的事情:

Intent zxing = getZxingIntent(this);
zxing.putExtra( "com.google.zxing.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE"); 
startActivityForResult(zxing, 0);

获取ZxingIntent的方法:

public static Intent getZxingIntent(Context context) {
    Intent zxingIntent = new Intent("com.google.zxing.client.android.SCAN");
    final PackageManager pm = context.getPackageManager();
    List<ResolveInfo> activityList = pm.queryIntentActivities(zxingIntent,
            0);
    for (int i = 0; i < activityList.size(); i++) {
        ResolveInfo app = activityList.get(i);
        if (app.activityInfo.name.contains("zxing")) {
            zxingIntent.setClassName(app.activityInfo.packageName,
                    app.activityInfo.name);
            return zxingIntent;
        }
    }
    return zxingIntent;
}

修改 当您发送Zxing意图时提到this question它会搜索条形码扫描器,因此如果您有另一个条形码扫描器,它将创建一个选择器。如果Zxing在设备上不可用,您将无法使用它。所以你也应该检查一下。但无论如何,我上面提供的剪切应该可以找到Zxing是否可以在设备上使用。 (但是我没有机会测试它,所以你可能需要改变一下。)

答案 1 :(得分:0)

link可以帮助你..

有一个例子gitHub project

答案 2 :(得分:0)

你可以试试这个

Intent intent = new Intent("com.google.zxing.client.android.SCAN");
            intent.setPackage(getPackageName());
            intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
            startActivityForResult(intent, 0);