我正在使用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
答案 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
cordova plugin add https://github.com/don/FileOpener.git
window.plugins.fileOpener.open("file:///sdcard/Android/data/com.example.application/document.doc")
就是这样!祝你好运!