起初:
是的,StackOverflow中有很多解决方案,但在我的情况下它们不起作用。
我想:
将文件下载到本地文件系统它是一个PDF文件 - 工作正常使用:
var fileTransfer = new FileTransfer();
fileTransfer.download(.....
在原生应用中打开PDF(例如Adobe Reader),无论哪个安装在Android上用于PDF - 它无法正常工作:
我试过了:
(1)
cordova.exec("ChildBrowserCommand.showWebPage", encodeURI(theFile.toURL()) );
(2)
window.plugins.childBrowser.showWebPage(encodeURI(theFile.toURL()));
(3)
window.open(encodeURI(theFile.toURL()), '_blank', 'location=yes');
(4) 甚至是firefox开放PDF的HTML5插件
所有变体都带有“file://”,而前面没有“./”等等。
childBrowser只显示白色屏幕,每次在前面添加“http://”,window.open - 相同。
我终于找到了像WebIntent这样有趣的东西,所以我做了:
window.plugins.webintent.startActivity({
action: window.plugins.webintent.ACTION_VIEW,
type: "application/pdf",
url: encodeURI(theFile.toURL().substring(7))},
function() {},
function() {alert('Failed to open URL via Android Intent')}
);
但由于phonegap-build没有附加类文件而无法找到WebIntent Class,因此无法正常工作
我在config.xml中声明了这个插件:
<gap:plugin name="com.borismus.webintent.WebIntent" />
你知道为什么它不起作用,或者我正在做什么? 也许你知道打开文件的其他方式就像在本机应用程序中一样,它假设很简单
我只是希望我的应用程序下载并显示(在本机应用程序中)用户的PDF。
答案 0 :(得分:1)
don的FileOpener版本已经在我的应用程序cordova 3.0上运行
phonegap local plugin add https://github.com/don/FileOpener
然后自动添加所有xmls,插件等。
在index.html上添加 fileopener.js 然后
window.plugins.fileOpener.open( path );
答案 1 :(得分:-1)
$("#page").on('pageshow', function(event, ui) {
if(event.handled !== true)
{
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
event.handled = true;
}
return false;
});
function fail() {
console.log("failed to get filesystem");
}
function gotFS(fileSystem) {
console.log("got filesystem");
// save the file system for later access
console.log(fileSystem.root.fullPath);
window.rootFS = fileSystem.root;
downloadImage(url, fileName);
}
function downloadImage(url, fileName){
var ft = new FileTransfer();
ft.download(
url,
window.rootFS.fullPath + "/" + fileName,
function(entry) {
console.log("download complete: " + entry.fullPath);
},
function(error) {
console.log("download error" + error.code);
}
);
}