我有一个Android应用程序,我已经集成了zxing条形码扫描仪。它工作正常,但只有一个问题: 我有另一个条形码扫描仪,所以当我的应用程序打电话给条形码扫描仪时,它总是要求我选择应用程序。
我只想强迫zxing打开我的应用程序。
任何解决方案?
答案 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);