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

使用phonegap在.apk中使用本机android应用程序打开pdf,android,pdf,cordova,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(您必须使用\u blank而不是\u system) 我尝试将带有Phon

我正在使用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(您必须使用
\u blank
而不是
\u system

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

可以直接从android_资产/www路径打开pdf吗?
是否可以将文件复制到SD卡,然后从那里打开它?
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):显示com.company.appname/.appname:+1s611ms
I/ActivityManager(22040):显示com.tf.thinkdroid.samsung/com.tf.thinkdroid.pdf.app.pdf屏幕:+1s549ms
D/CordovaLog(27549):从本机触发暂停事件的异常
I/Web控制台(27549):在未定义的位置从本机触发暂停事件的异常:1
...
I/InputReader(22040):dispatchTouch::touch事件的动作为0
I/InputDispatcher(22040):向当前输入目标提供触摸:操作:0,通道'40a9f450 com.tf.thinkdroid.samsung/com.tf.thinkdroid.pdf.app.PdfRenderScreen(服务器)'
I/InputReader(22040):dispatchTouch::touch事件的动作为1
I/InputDispatcher(22040):向当前输入目标提供触摸:操作:1,频道“40a9f450 com.tf.thinkdroid.samsung/com.tf.thinkdroid.pdf.app.PdfRenderScreen(服务器)”
....

D/DroidGap(27549):恢复应用程序

我相信这在您的情况下可能会起作用:

if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) { webView.getSettings().setAllowUniversalAccessFromFileURLs(true); } if(Build.VERSION.SDK\u INT>=VERSION\u CODES.JELLY\u BEAN){ webView.getSettings().setAllowUniversalAccessFromFileURLs(true); }
最初的回答是:

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

解决方案 首先,在之前获取文件,然后使用从服务器下载。下载完成后,请致电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”

就这样!祝你好运

谢谢,但我想对于extern应用程序,仍然不允许从我的应用程序访问文件…请阅读此答案,这将对您有所帮助。