2

我正在使用 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 将文件加载到 sdcard,但我读到它无法访问 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

4

2 回答 2

0

我相信这可能适用于您的情况:

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

最初在这里回答:允许在 HTML5 Phonegapped Android 应用中打开本地文件

于 2013-08-28T19:23:16.937 回答
0

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

解决方案

首先,通过请求文件系统获取文件,然后使用fileTransfer.download()从您的服务器下载它。完成下载后调用 FileOpener(它将打开一个弹出窗口,您可以在其中选择 Adob​​e Reader 等应用程序)。注意:确保通过 CLI/终端包含 FileTransfer 功能:cordova plugin add 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")

而已!祝你好运!

于 2014-01-07T06:44:30.727 回答