使用phonegap在本机android应用程序中打开.apk中的pdf

时间:2013-08-28 18:22:47

标签: android pdf cordova

我正在使用Phonegap(版本:2.7.0)为iOS和Android编写应用程序。 pdf文件是file:///android_asset/www/test.pdf(在.apk中压缩)。

我尝试使用原生pdf查看器打开此pdf,如:

window.open('file:///android_asset/www/test.pdf', '_system', 'location=yes');

上述命令适用于浏览器和iOS(您必须使用_blank而不是_system

我尝试将带有Phonegap File API的文件加载到SD卡,但我读到它无法访问android_asset / www中的文件。

是否可以直接从android_asset / www路径打开pdf?
是否可以将文件复制到sdcard,从那里打开它? 也许它可能与Android安装脚本?

编辑:

我将它添加到/src/com/...etc .java文件中的.java文件中:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {        
  super.appView.getSettings().setAllowUniversalAccessFromFileURLs(true);
}

但仍存在同样的问题......

我有adb -d logcat的输出,当我启动应用并点击pdf链接时会发生这种情况:

I/ActivityManager(22040): Displayed com.company.appname/.Appname: +1s611ms I/ActivityManager(22040): Displayed com.tf.thinkdroid.samsung/com.tf.thinkdroid.pdf.app.PdfRenderScreen: +1s549ms D/CordovaLog(27549): exception firing pause event from native I/Web Console(27549): exception firing pause event from native at undefined:1 ... I/InputReader(22040): dispatchTouch::touch event's action is 0 I/InputDispatcher(22040): Delivering touch to current input target: action: 0, channel '40a9f450 com.tf.thinkdroid.samsung/com.tf.thinkdroid.pdf.app.PdfRenderScreen (server)' I/InputReader(22040): dispatchTouch::touch event's action is 1 I/InputDispatcher(22040): Delivering touch to current input target: action: 1, channel '40a9f450 com.tf.thinkdroid.samsung/com.tf.thinkdroid.pdf.app.PdfRenderScreen (server)' .... D/DroidGap(27549): Resuming the App

2 个答案:

答案 0 :(得分:0)

我相信这可能适合你的情况:

if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) {
  webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
}

最初在这里回答:Allow opening of local files in HTML5 Phonegapped Android app

答案 1 :(得分:0)

我遇到了与OP相同的问题以及后来的许多不成功的方法我得到了以下解决方案(使用Cordova 3.1.0和三星Galaxy S3测试):

解决方案

首先,按requesting the file system获取文件,然后使用fileTransfer.download()从服务器下载该文件。完成下载后,调用FileOpener(将打开一个弹出窗口,从Adobe Reader等应用程序中进行选择)。注意:确保通过CLI /终端包含FileTransfer功能: cordova插件添加org.apache.cordova.file

  • 导航到您的项目文件夹
  • 打开CLI /终端并输入: cordova plugin add https://github.com/don/FileOpener.git
  • 在您的设备上成功下载并存储文件后(见上文),您可以打开它: window.plugins.fileOpener.open("file:///sdcard/Android/data/com.example.application/document.doc")

就是这样!祝你好运!