читать содержимое локального файла (json) на Androidicon для Android из файла: /// data / user / 0 / ... путь не работает - PullRequest
1 голос
/ 06 октября 2019

У меня действительно странная проблема с получением локальных файловых данных на android с помощью ionic-framework.

Ситуация: у меня есть файл, который был ранее создан по пути file: /// data /user / 0 / app-id / files / my-folder / xyz.json

Я могу найти файл в "оболочке adb", я также проверил данные внутри с помощью cat, и все в порядке,В обозревателе файлов Android-Studio я также проверил файл.

С помощью встроенного плагина файлов '@ ionic-native / file / ngx' Я также могу подтвердить, что файлтам.

const jsonFile = "pathToFile";
this.file.resolveLocalFilesystemUrl(jsonFile).then(fileEntry => {
      console.log(fileEntry.nativeURL);
    }).catch(err => {
      console.log(err);
    });

Результат:

filesystem: FileSystem {name: "files", root: DirectoryEntry}
isDirectory: false
isFile: true

Это также решает другие вещи правильно, например. name, fullPath, nativeURL

Теперь проблема начинается, потому что я не могу найти способ получить данные.

this.file.readAsText('', jsonFile).then(fileData => {...
this.file.readAsDataURL('', jsonFile).then(fileData => {...
this.file.readAsBinaryString('', jsonFile).then(fileData => {...
this.file.readAsArrayBuffer('', jsonFile).then(fileData => {...

Все они приводят к сообщению {code: 5,: "ENCODING_ERR"}

Я также пытался получить данные с помощью встроенного http-плагина, с выборкой и обычным угловым запросом http ...

Все приводит к cors, 404 и т. Д. .

В общем, как я могу получить json-данные по локальному пути, который указывает на файл : ///data/user/0/app-id/files/...

Ионная информация:

Ionic:

   Ionic CLI                     : 5.4.2 (xxxx/.npm-packages/lib/node_modules/ionic)
   Ionic Framework               : @ionic/angular 4.10.0
   @angular-devkit/build-angular : 0.801.3
   @angular-devkit/schematics    : 8.1.3
   @angular/cli                  : 8.1.3
   @ionic/angular-toolkit        : 2.0.0

Cordova:

   Cordova CLI       : 9.0.0 (cordova-lib@9.0.1)
   Cordova Platforms : android 8.1.0
   Cordova Plugins   : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 4.1.2, (and 7 other plugins)

Utility:

   cordova-res : 0.7.0
   native-run  : 0.2.8

System:

   Android SDK Tools : 26.1.1 (xxxx/Library/Android/sdk)
   ios-deploy        : 1.9.4
   NodeJS            : v12.10.0 (/usr/local/Cellar/node/12.10.0/bin/node)
   npm               : 6.11.3
   OS                : macOS Mojave
   Xcode             : Xcode 11.0 Build version 11A420a

1 Ответ

0 голосов
/ 07 октября 2019

Неверное имя файла?

Согласно этой записи , это может произойти, если ваше имя файла содержит недопустимый символ, например :, который недопустим в Windows и поэтому зарезервирован.

Удалить и добавить платформу?

Кажется, кто-то решил эту проблему, удалив и добавив платформу:

Конвертироватьfile: /// to http url?

Изначально я подумал, что это проблема, и начал писать ее, но теперь я не уверен в этом. Оставьте его на тот случай, если это действительно поможет:

Если вы прочитаете этот пост , в нем говорится о URL файлов:

const displayImage = this.webview.convertFileSrc(storedPhoto);
...