ionic 3 / файл плагина cordova / iOS / доступ к файлам - PullRequest
0 голосов
/ 26 сентября 2019

Я разработал приложение, которое позволяет открывать и редактировать файлы Office (.docx) в Word.Чтобы приложение и Word имели соответствующие разрешения для iOS, я установил для параметра «LSSupportsOpeningDocumentsInPlace» значение YES в моем файле info.plist.Я также хочу, чтобы я мог обмениваться файлами непосредственно из приложения «Файлы» в свое приложение.Однако в iOS опция «Поделиться в myApp» больше не работает, как только я установил для «LSSupportsOpeningDocumentsInPlace» значение YES, а только «Открыть в« myApp »».И именно в этом заключается проблема, когда я передаю переданный путь к файлу плагина.Без «LSSupportsOpeningDocumentsInPlace» я получаю следующий путь:

файл: /// private / var / mobile / Containers / Data / Application / 300F9E3A-2E17-4330-8F88-12855269CCA8 / tmp / com.my.app-Inbox / Dokument.docx

Файл плагина распознает путь, и я могу сделать что-нибудь еще с файлом, который хочу.

Но с установленной опцией "LSSupportsOpeningDocumentsInPlace" дляДА Я получаю следующий путь:

file: ///private/var/mobile/Containers/Data/Application/304CFCDB-227B-4149-9F87-078B341F7A00/Documents/Dokument.docx

И файл плагина возвращает ошибку: «NOT_FOUND_ERROR»

Есть ли способ, который работает оба?Функции частей из файлов и разрешение редактировать документы из приложения?

РЕДАКТИРОВАТЬ:

import {File} from '@ionic-native/file'

...


constructor(public file: File) {
}

this.deeplinks.routeWithNavController(this.nav, {}).subscribe(
           (match) => {

               this.storeFile(match.$link.url);
            }

            }, (nomatch) => {

            });

storeFile(filepath) {

    this.file.resolveLocalFilesystemUrl(filepath)
        .then((entry) => {
            console.log(entry);
        })
        .catch((e) => {
            console.log(e)
        })
}

РЕДАКТИРОВАТЬ 2:

storeFile(filepath) {

   this.file.resolveDirectoryUrl(path1)

        .then((entry) => {

            console.log('+++++++++++++++', entry);

            this.file.checkDir(entry.nativeURL, '')
                .then((dir) => {
                    console.log('+++++++++++++++ dir', dir);

                    this.file.listDir(entry.nativeURL, '')
                        .then((list) => {
                            console.log('+++++++++++++++ list', list);
                        })
                        .catch((e) => {
                            console.log('--------------- list', e) // <--- NOT_FOUND_ERROR
                        })
                })
                .catch((e) => {
                    console.log('--------------- dir', e)
                })

        }, (e) => {
            console.log('---------------', e)
        });
}

1 Ответ

0 голосов
/ 26 сентября 2019

Я не уверен, но, возможно, это поможет 90%;попробуйте добавить плагин webview и конвертировать файл, затем скопируйте выбранный файл в каталог кэша приложения, и оттуда у него будет свой стабильный каталог, к которому всегда можно получить доступ из одного места, не просматривая файл каждый раз из другого места.Я думаю, что это поможет.

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