Диагностическое исключение Кордовы для Diagnostic.getExternalSdCardDetails () - PullRequest
0 голосов
/ 28 июня 2019

Я должен прочитать данные с SD-карты в устройстве.

Сначала я пытаюсь сделать это через cordova-plugin-file , но он просто показывает мне file:///storage/emulated/0/, а не каталог sdcard.

Я обнаружил, что мне нужно использовать cordova.plugins.diagnostic , чтобы решить мою проблему, но когда я использую его (с Diagnostic.getExternalSdCardDetails().then(OnSucceedFunction, OnFailureFunction)*), он "работает" на веб-представлении ( пришлите мне ошибку cordova_not_available, но это логика), но в приложении для Android ничего не добавляется в приложение, и мне нужно использовать консоль Android, чтобы увидеть:

E/Diagnostic: Exception occurred onRequestPermissionsResult: No context found for request id=1000
    java.lang.NullPointerException: Attempt to invoke virtual method 'void org.apache.cordova.CallbackContext.error(java.lang.String)' on a null object reference

и я не нашел ничего о переполнении стека или где-либо еще в Интернете, поэтому я здесь, чтобы попросить о помощи

* OnSucceedFunction и OnFailureFunction предназначены только для того, чтобы вы поняли, что я делаю, я знаю, что если я напишу это, это не сработает

Ответы [ 2 ]

1 голос
/ 12 июля 2019

вам нужен ионный Диагностика

ionic cordova plugin add cordova-plugin-file
npm install @ionic-native/file

Согласно @MarcusIII (Его ответ) это

this.diagnostic.requestExternalStorageAuthorization().then(()=>{
//your permission 
}).catch(error=>{
//Error Handling part
});
0 голосов
/ 12 июля 2019

Я думаю, что если вам нужно читать с SDCard, в соответствии с документацией, ваш код необходимо изменить следующим образом:

window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory + 'file_name', readFile, onErrorReadFile);

function readFile(fileEntry) {

  fileEntry.file(function(file) {
    var reader = new FileReader();

    reader.onloadend = function() {
      console.log("Successful file read: " + this.result);
      displayFileData(fileEntry.fullPath + ": " + this.result);
    };

    reader.readAsText(file);

  }, onErrorReadFile);
}

function onErrorReadFile(error) {
  console.log('error reading', error);
}

cordova.file.externalRootDirectory поможет вам указатьна вашу SDCard.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...