Cordova android_资产真实路径

Cordova android_资产真实路径,cordova,mobile,Cordova,Mobile,我想打开一个PDF文件,但我必须提供给 cordova.plugins.fileOpener2.open实际路径(即/sdcard/Download/starwars.pdf),因为file:///android_asset/www/starwars.pdf 不起作用,事实上插件返回未找到文件 现在,设备android\u资产dir在哪里?它是如何真实映射的?假设您也安装了,并且假设您的文件位于应用程序内部的www/starwars.pdf,您可以使用cordova.file.applicati

我想打开一个PDF文件,但我必须提供给
cordova.plugins.fileOpener2.open
实际路径(即
/sdcard/Download/starwars.pdf
),因为file:///android_asset/www/starwars.pdf 不起作用,事实上插件返回未找到文件


现在,设备
android\u资产
dir在哪里?它是如何真实映射的?

假设您也安装了,并且假设您的文件位于应用程序内部的www/starwars.pdf,您可以使用cordova.file.applicationDirectory指向您的文件:

var filePath = cordova.file.applicationDirectory + 'www/starwars.pdf';
cordova.plugins.fileOpener2.open(filePath, 'application/pdf', ...
cordova.file.applicationDirectory—安装应用程序的只读目录。(iOS、Android、黑莓10)


编辑:完成此操作的唯一方法似乎是将文件传输到外部存储器,然后对该文件执行打开操作。除了cordova插件文件,您还需要cordova插件文件传输。当然还有cordova-plugin-file-opener2

    var filePath = cordova.file.applicationDirectory + '/www/pdf-sample.pdf';        
    window.resolveLocalFileSystemURL(filePath, function(entry) {
        var fileTransfer = new FileTransfer();
        var targetFile = cordova.file.externalDataDirectory + entry.name;

        fileTransfer.download(
            entry.toURL(),
            targetFile,
            function(entry) {
                cordova.plugins.fileOpener2.open(
                    targetFile,
                    'application/pdf', 
                    {
                        error : function(error){ alert('open error ' + JSON.stringify(error)) }, 
                        success : function(){ } 
                    } 
                );

            },
            function(error) {
                console.log("download error source " + error.source);
                console.log("download error target " + error.target);
                console.log("upload error code" + error.code);
            }
        );
请参阅在my Github repo中执行此操作的Cordova应用程序的工作版本:


请注意,您还需要一个pdf文件查看器应用程序来处理“open pdf”意图。

假设您也安装了,并且假设您的文件位于应用程序内部的www/starwars.pdf,您可以使用cordova.file.applicationDirectory指向您的文件:

var filePath = cordova.file.applicationDirectory + 'www/starwars.pdf';
cordova.plugins.fileOpener2.open(filePath, 'application/pdf', ...
cordova.file.applicationDirectory—安装应用程序的只读目录。(iOS、Android、黑莓10)


编辑:完成此操作的唯一方法似乎是将文件传输到外部存储器,然后对该文件执行打开操作。除了cordova插件文件,您还需要cordova插件文件传输。当然还有cordova-plugin-file-opener2

    var filePath = cordova.file.applicationDirectory + '/www/pdf-sample.pdf';        
    window.resolveLocalFileSystemURL(filePath, function(entry) {
        var fileTransfer = new FileTransfer();
        var targetFile = cordova.file.externalDataDirectory + entry.name;

        fileTransfer.download(
            entry.toURL(),
            targetFile,
            function(entry) {
                cordova.plugins.fileOpener2.open(
                    targetFile,
                    'application/pdf', 
                    {
                        error : function(error){ alert('open error ' + JSON.stringify(error)) }, 
                        success : function(){ } 
                    } 
                );

            },
            function(error) {
                console.log("download error source " + error.source);
                console.log("download error target " + error.target);
                console.log("upload error code" + error.code);
            }
        );
请参阅在my Github repo中执行此操作的Cordova应用程序的工作版本:


请注意,您还需要一个pdf文件查看器应用程序来处理“打开pdf”的意图。

不,这不起作用,因为cordova.file.applicationDirectory返回file:///android_asset/ 这不适用于插件!有什么进展吗?我可以让它提供index.html上的文件信息,但不能提供file.pdf。它只会在pdf和docx文件上抛出错误代码1。看来,唯一可行的方法是将文件传输到外部存储器,然后对该文件执行打开操作。查看我的更新答案。不,这不起作用,因为cordova.file.applicationDirectory返回file:///android_asset/ 这不适用于插件!有什么进展吗?我可以让它提供index.html上的文件信息,但不能提供file.pdf。它只会在pdf和docx文件上抛出错误代码1。看来,唯一可行的方法是将文件传输到外部存储器,然后对该文件执行打开操作。请参阅我的最新答案。