Phonegap如何在android应用程序中下载和打开pdf文件

Phonegap如何在android应用程序中下载和打开pdf文件,android,cordova,Android,Cordova,最近,我在phonegap上开发了一款android应用程序,我对手机开发非常陌生,这是我的第一款应用程序,但在通过谷歌搜索后,我尝试将一些文档(pdf、doc、jpg)下载到本地存储并打开它时,我被卡住了 我遵循了示例中的确切代码,下面是如何调用插件: window.plugins.downloader.downloadFile(url,'/sdcard/download/', 'test.pdf', true, downloadOkCallbak, downloadErCallbak);

最近,我在phonegap上开发了一款android应用程序,我对手机开发非常陌生,这是我的第一款应用程序,但在通过谷歌搜索后,我尝试将一些文档(pdf、doc、jpg)下载到本地存储并打开它时,我被卡住了

我遵循了示例中的确切代码,下面是如何调用插件:

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
  • 在设备上成功下载并存储文件(见上文)后,您可以通过以下方式打开文件:
    window.plugins.fileOpener.open(“file:///sdcard/Android/data/com.example.application/document.doc“”
    或iOS上的适当路径
就这样!祝你好运

确保

您应该安装git并安装文件插件(cordova 3.0+)

文件和文件传输插件

$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('没有处理此文件类型的应用程序');},')

它在Android和IOS上都适用于我。我用它来打开图像PDF文件

Android:如果可用,它会使用系统应用程序打开文件,否则会给出一个错误,您可以处理该错误

IOS:它使用Done按钮和选项按钮以弹出式视图打开文件

它不会显示您的文档URL。


源代码可在此处找到:

您是否拥有扩展DroidGap和插件类的类?介意分享showPdf函数的一些代码吗?是的,它扩展了插件类,太长了,无法通过这里的代码,我将把它放在下面的回复中。很抱歉,我无法将我的代码粘贴到下面,我更新了我的问题以包含代码。谢谢你的回答,是的,我已经设置了权限。实际上,我正在寻找一个使用phonegap+jquery mobile的解决方案,这意味着我可以通过javascript调用来下载/打开pdf。这个插件正是我想要的,不再需要处理糟糕或不完整的文档。这个答案非常有帮助我发现这个插件非常适合处理文件打开——“文件传输”Cordova插件已被弃用,取而代之的是XMLHttpRequest,请参阅本页上非常有用的文档(编写临时/永久文件):