ZXing IntentIntegrator 总是要求安装 Barcode Scanner 应用程序

ZXing IntentIntegrator always asks to install Barcode Scanner app

我正在尝试使用 ZXing Intent Integrator 和库将条形码扫描到我的应用程序中。 当我点击扫描按钮时,它总是会提示安装条码扫描器应用程序。即使我已经安装了它。 根据文档,我使用

调用扫描仪
IntentIntegrator intentIntegrator = new IntentIntegrator(this);
intentIntegrator.initiateScan();

然后在

protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);
        IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
        if (scanResult != null) {
            String barcode = scanResult.getContents();
            EditText txt = findViewById(focused);
            txt.setText(barcode);
            EditText next = findViewById(focused + 1);
            next.requestFocus();
        }
}

但是,永远不会调用 onActivityResult。 同样在 IntentIntegrator class 我在 initiateScan 方法中发现,它使用:

 String targetAppPackage = this.findTargetAppPackage(intentScan);
        if (targetAppPackage == null) {
            return this.showDownloadDialog();
        } else {
            intentScan.setPackage(targetAppPackage);
            intentScan.addFlags(67108864);
            intentScan.addFlags(524288);
            this.attachMoreExtras(intentScan);
            this.startActivityForResult(intentScan, 49374);
            return null;
        }

如果我没看错,如果 targetAppPackage 为空,它会提示下载。好吧 targetAppPackage 总是返回 null。

有什么想法吗?我已经根据需要包含了依赖项,但仍然没有任何效果。

谢谢!

经过更多研究后,我发现 here 添加:

repositories {
    mavenCentral()
}

dependencies {
    implementation 'com.journeyapps:zxing-android-embedded:4.2.0'
    implementation 'androidx.appcompat:appcompat:1.0.2'
}

android {
    buildToolsVersion '28.0.3' // Older versions may give compile errors
}

build.gradle 文件和 <application android:hardwareAccelerated="true" ... >AndroidManifest.xml 并且效果很好。 无需安装其他应用程序,也没有问题。

将此添加到您的 android 清单

 <queries>
        <package android:name="com.google.zxing.client.android" />
 </queries>

这是 Android 的 11 新 Package Visibility 过滤功能的一部分。