簡體   English   中英

Ionic Creator + Cordova條碼掃描器寫:false

[英]Ionic Creator + Cordova Barcode Scanner write : false

我寫了一個非常簡單的離子包(作為測試的一部分)來啟動條形碼掃描儀

我已經安裝了cordova-plugin-barcodescanner並使用了以下內容

$scope.scanBarcode = function() {

    $cordovaBarcodeScanner
      .scan()
      .then(function(barcodeData) {
        alert(barcodeData);
      }, function(error) {
        alert(error);
      });
}

然后我有一個非常簡單的

<button ng-click="scanBarcode()">Scan</button>

我編譯了應用程序,生成了我的apk,安裝在設備上,確認應用程序已啟用相機(和存儲)的權限。

當我單擊掃描按鈕時,會發出錯誤

寫設置:false

我無法開始,因為barcodescanner沒有特定的錯誤文檔。

只是建議我在編譯應用程序后能夠使用cordova-plugin-camera確定離子創建器。

其實我也遇到過這個問題,它可能會發生在Android 6.0及以上版本中。

在插件中,以下代碼是觸發它的代碼。

if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP + 1) {
      Class systemClass = Settings.System.class;
      try {
          Method canWriteMethod = systemClass.getDeclaredMethod("canWrite", Context.class);
          boolean retVal = (Boolean) canWriteMethod.invoke(null, this.cordova.getActivity());
          Log.d(LOG_TAG, "Can Write Settings: " + retVal);
          if (!retVal && !action.equals("requestWriteSettings") && !action.equals("getWriteSettings")) {
              //can't write Settings
              this.callbackContext.error("write settings: false");
              return false;
          }
          this.writeSettings = retVal;
      } catch (Exception ignored) {
          Log.e(LOG_TAG, "Could not perform permission check");
          this.callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.ILLEGAL_ACCESS_EXCEPTION));
      }
  }

所以我認為我們需要通知插件創建者或提交一個修復程序。

暫時你能做的就是通過評論我分享的整個區塊來傳遞它。 好像它在我這邊工作,沒有檢查這是否實際上在代碼中的某處使用過。 為什么必須調用它。

另一種正確的方法,即通過實現以下內容來增強代碼:

A.包含在AndroidManifest.xml中:

<uses-permission android:name="android.permission.WRITE_SETTINGS" />

B.允許或要求用戶通過調用所需的意圖來允許寫入設置:

Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
intent.setData(Uri.parse("package:" + this.cordova.getActivity().getPackageName()));
this.cordova.getActivity().startActivity(intent);

UPDATE

C.這是由MoleDesign建議的,如下面的答案之一所述。 解決方法的另一個解決方案是降低項目中的sdk版本.properties將其更改為:

target=android-23

從SDK-25及以上版本看來,一些cordova插件存在問題。 我通過更改project.properties文件解決了我的問題

target=android-25

target=android-23

這可能也適用於24,但我沒有安裝該SDK

一旦構建了應用程序,條形碼閱讀器就可以正常工作

我也遇到了這個錯誤並設法通過將cordova-plugin-barcodescanner從版本0.7.1恢復到版本0.7.0來修復它

希望這可以節省一些人,我試圖解決這個錯誤的挫折時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM