Phonegap如何在android应用程序中下载和打开pdf文件
最近,我在phonegap上开发了一款android应用程序,我对手机开发非常陌生,这是我的第一款应用程序,但在通过谷歌搜索后,我尝试将一些文档(pdf、doc、jpg)下载到本地存储并打开它时,我被卡住了 我遵循了示例中的确切代码,下面是如何调用插件:Phonegap如何在android应用程序中下载和打开pdf文件,android,cordova,Android,Cordova,最近,我在phonegap上开发了一款android应用程序,我对手机开发非常陌生,这是我的第一款应用程序,但在通过谷歌搜索后,我尝试将一些文档(pdf、doc、jpg)下载到本地存储并打开它时,我被卡住了 我遵循了示例中的确切代码,下面是如何调用插件: window.plugins.downloader.downloadFile(url,'/sdcard/download/', 'test.pdf', true, downloadOkCallbak, downloadErCallbak);
window.plugins.downloader.downloadFile(url,'/sdcard/download/', 'test.pdf', true, downloadOkCallbak, downloadErCallbak);
window.plugins.pdfViewer.showPdf('/sdcard/download/test.pdf');
url是我的远程文件,当我执行它时,我得到一个错误:“TypeError:window.plugins未定义”。感谢任何人的帮助
[更新]我的showPdf函数代码:
public String showPdf(String fileName) {
File file = new File(fileName);
if (file.exists()) {
try {
Uri path = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(path, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//intent.setData(Uri.parse(fileName));
this.ctx.startActivity(intent);
return "";
} catch (android.content.ActivityNotFoundException e) {
System.out.println("PdfViewer: Error loading url "+fileName+":"+ e.toString());
return e.toString();
}
}else{
return "file not found";
}
}
[Update 2]我在web控制台中发现以下错误:未捕获引用错误:本地文件系统未定义在
可能是什么问题?确保manifest.xml中有以下行:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
您可以在此处找到帮助我遇到了与OP相同的问题,后来我找到了许多不成功的解决方案(使用Cordova 3.1.0-3.3.0和三星Galaxy S3及iOS 7进行了测试): 解决方案 首先,在之前获取文件,然后使用从服务器下载。下载完成后,请致电FileOpener(它将打开一个弹出窗口,从Adobe Reader等应用程序中进行选择)。注意:确保通过CLI/Terminal:cordova插件添加org.apache.cordova.file包含文件传输功能
- 导航到您的项目文件夹
- 打开CLI/终端并键入:
cordova插件添加https://github.com/don/FileOpener.git
- 在设备上成功下载并存储文件(见上文)后,您可以通过以下方式打开文件:
或iOS上的适当路径window.plugins.fileOpener.open(“file:///sdcard/Android/data/com.example.application/document.doc“”
$cordova插件添加org.apache.cordova.file
$cordova plugin add org.apache.cordova.file transfer
请尝试插件fileOpener2
尝试使用以下步骤从URL打开任何类型的文档:
- 安装此插件:cordova插件添加
- 使用此代码: handleDocumentWithURL(函数(){console.log('success');},函数(error){console.log('failure');if(error==53){console.log('没有处理此文件类型的应用程序');},')
源代码可在此处找到:您是否拥有扩展DroidGap和插件类的类?介意分享showPdf函数的一些代码吗?是的,它扩展了插件类,太长了,无法通过这里的代码,我将把它放在下面的回复中。很抱歉,我无法将我的代码粘贴到下面,我更新了我的问题以包含代码。谢谢你的回答,是的,我已经设置了权限。实际上,我正在寻找一个使用phonegap+jquery mobile的解决方案,这意味着我可以通过javascript调用来下载/打开pdf。这个插件正是我想要的,不再需要处理糟糕或不完整的文档。这个答案非常有帮助我发现这个插件非常适合处理文件打开——“文件传输”Cordova插件已被弃用,取而代之的是XMLHttpRequest,请参阅本页上非常有用的文档(编写临时/永久文件):