Cordova 6.3.1 загрузить PDF и открыть с помощью FileSystem, FileTransfer и FileOpener2

#android #ios #cordova #pdf

#Android #iOS #кордова #PDF

Вопрос:

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

Я хочу загрузить PDF-файл в локальное хранилище устройства Android, а затем открыть его во внешнем устройстве чтения, поскольку Android не может отображать PDF-файл в браузере. Для iOS я просто использую плагин InAppBrowser, который отлично работает, кстати. Я использую cordova 6.3.1.

Итак, это мой код:

 if (cordova.platformId === "android") {
            var remoteFile = url;
            var localFileName = "tmp.pdf";

            window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {

                //var fileSystemRoot = cordova.file.dataDirectory; Does not work...
                var fileSystemRoot = fileSystem.root.toURL()

                console.log(cordova.file.dataDirectory);

                    var ft = new FileTransfer();
                    ft.download(remoteFile,
                    fileSystemRoot   "tmp.pdf", function(entry) {
                        cordova.plugins.fileOpener2.open(
                            entry.toURL(),
                            'application/pdf',
                            {
                                error : function(e) {
                                    console.log('Error status: '   e.status   ' - Error message: '   e.message   ' - URL: '   messageObj.url);
                            },
                                success : function () {
                                    console.log('file opened successfully');
                                    console.log(fileSystemRoot);
                                    console.log(entry.toURL());
                                }
                            }
                        );
                    }, function(error) {
                        console.log("Error in downloading");
                        console.log(error);
                    });
            }, function(error) {
                console.log("Error in requesting filesystem");
                console.log(error);
            });
}
  

Я перепробовал множество разных вещей. FileSystem.root.fullpath, FileSystem.root.toURL(), FileSystem.root.nativeURL но я всегда получаю путь, который, похоже, не соответствует устройству. Я всегда получаю сообщение об успешном завершении загрузки, появляется Adobe Reader, но говорит, что файл недоступен для чтения. Меня это не удивляет, так как путь, который он мне дает, выглядит примерно так:

 file:///data/data/ch.novalogix.novalib/files/files
  

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

Есть идеи? Заранее спасибо!

Ответ №1:

Я использовал фиксированные пути вместо LocalFileSystem.