我正在完成一个应用程序。 调试APK可以正常工作,而要在商店上发布的签名版本不能正常工作,这使我无法检查错误。
问题与我添加到项目中的条形码扫描仪有关
$ ionic cordova plugin add phonegap-plugin-barcodescanner
$ npm install @ionic-native/barcode-scanner
我不明白为什么两个apk表现不同。
我想这可能是权限问题,但我没有找到 足够的文档
答案 0 :(得分:0)
奇怪!我最近一直在使用相同的条形码扫描仪,并且在调试模式下工作正常。
当我更改程序包名称时,它将所有内容重置为默认值,因此我再次被请求权限。
这次我作为实验拒绝了。
该应用给出了错误“错误:非法访问”。
您有什么办法可以解决这类问题吗?
这就是我所拥有的:
async scanCode() {
try {
let barcodeData: BarcodeScanResult = await this.barcodeScanner.scan(this.barcodeScannerOptions);
if (barcodeData.cancelled) {
await this.msg.showAutoDismissToast("QR code scan cancelled");
this.analytics.trackEvent("QR code scan cancelled");
return;
}
this.addScannedDataToList(barcodeData);
const scanResultModal = await this.modalController.create({
component: ScanResultModalPage
});
await scanResultModal.present();
await this.msg.showAutoDismissToast("QR code scanned");
} catch (err) {
await this.msg.showAutoDismissToast("Error: " + err);
}
}
您需要根据情况进行一些调整,但是它显示了尝试捕获的基本概念。
我的showAutoDismissToast
没什么花哨的,只是一个标准片段:
async showAutoDismissToast(message) {
let toast = await this.toastController.create({
message,
duration: 2000,
position: 'bottom'
});
await toast.present();
}
希望将类似的内容放入其中,以解决阻止扫描仪工作的错误。
答案 1 :(得分:0)
我“解决”了这个问题:
// import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';
// private barcodeScanner: BarcodeScanner,
barcodeScanner = (<any>window).cordova.plugins.barcodeScanner;
答案 2 :(得分:0)
权限
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.CAMERA" />
我通过在/platform/app/src/main/AndroidManifest.xml中添加此权限来解决此问题
重新编译您的应用,然后它将询问用户访问相机的权限。
完成。