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 过滤功能的一部分。
我正在尝试使用 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 过滤功能的一部分。