我正在完成一个应用程序。调试APK工作正常,而用于在商店中发布的签名版本无法正常工作,从而阻止我检查错误。
该问题与我添加到项目中的条形码扫描仪有关
$ ionic cordova plugin add phonegap-plugin-barcodescanner
$ npm install @ionic-native/barcode-scanner
我不明白为什么两个apk的行为不同。
我想这可能是权限问题,但我没有找到足够的文档
我用这个"解决"了这个问题:
// import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';
// private barcodeScanner: BarcodeScanner,
barcodeScanner = (<any>window).cordova.plugins.barcodeScanner;
权限
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.CAMERA" />
我通过在/platform/app/src/main/AndroidManifest 添加此权限来解决此问题.xml
重新编译您的应用程序,然后它将询问用户访问相机的权限。
做。
奇怪!我最近一直在使用同一个条形码扫描仪,在调试模式下,它工作正常。
当我更改包名称时,它会将所有内容重置为默认值,因此再次要求我授予权限。
这次作为实验,我否认了。
该应用程序给出了错误"错误:非法访问"。
你有什么东西可以解决这类问题吗?
这是我所拥有的:
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();
}
希望放入这样的东西会发现阻止扫描仪工作的错误。