Cordova android_asset真实路径

时间:2015-08-17 15:24:06

标签: cordova mobile

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

现在,设备android_asset目录在哪里?它是如何真实映射的?

1 个答案:

答案 0 :(得分:0)

假设您还安装了trick,并假设您的文件位于 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,BlackBerry 10)

编辑:看来,实现此功能的唯一方法是将文件传输到外部存储,然后对该文件执行打开操作。除了cordova-plugin-file,你还需要cordova-plugin-file-transfer。当然还有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);
            }
        );

查看在我的Github仓库中执行此操作的Cordova应用程序的工作版本:cordova-plugin-file

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