我想打开一个PDF文件,但我必须提供给
cordova.plugins.fileOpener2.open
一条真实路径(即/sdcard/Download/starwars.pdf
),因为路径如file:///android_asset/www/starwars.pdf
不起作用,实际上插件返回找不到文件。
现在,设备android_asset
目录在哪里?它是如何真实映射的?
答案 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'意图。