Ionic Native-条码扫描器无法在生产apk中使用

时间:2019-06-14 16:22:10

标签: angular ionic4 ionic-native

我正在完成一个应用程序。 调试APK可以正常工作,而要在商店上发布的签名版本不能正常工作,这使我无法检查错误。

问题与我添加到项目中的条形码扫描仪有关

$ ionic cordova plugin add phonegap-plugin-barcodescanner

$ npm install @ionic-native/barcode-scanner

我不明白为什么两个apk表现不同。

我想这可能是权限问题,但我没有找到 足够的文档

3 个答案:

答案 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中添加此权限来解决此问题

重新编译您的应用,然后它将询问用户访问相机的权限。

完成。