【发布时间】:2013-02-18 19:41:17
【问题描述】:
我目前正在使用 PhoneGap。我使用 eclipse 作为我的 IDE。我正在开发的平板电脑是三星 Galaxy Tab 10.1,android 版本 4.0.4。
现在我正在尝试通过我的应用在设备上打开 PDF。但是它不起作用。我按照此页面上的教程进行操作,https://github.com/markeeftb/FileOpener。
这是我所做的更改。
-> 在 src 文件夹中,我创建了一个名为 com.phonegap.plugins.fileopener 的新文件夹 -> 我将 FileOpener.java 文件复制并粘贴到该文件夹中。 -> 然后在位于 xml 文件夹中的 config.xml 文件中,我添加了这一行
<plugin name="FileOpener" value="com.phonegap.plugins.fileopener.FileOpener"/>
-> 我也加了一行
<script type="text/javascript" charset="utf-8" src="fileopener.js"></script>
进入我的 index.html 文件
这里是 index.html 的代码
<!DOCTYPE HTML>
<html>
<head>
<title> PhoneGap </title>
<script type="text/javascript" charset="utf-8" src="cordova-2.3.0.js"></script>
<script type="text/javascript" charset="utf-8" src="fileopener.js"></script>
</head>
<body>
<h1>PDF Open Tester</h1>
<a href="#" onclick="window.plugins.fileOpener,open('/sdcard/Course Content Files/1.pdf');">open</a>
</body>
</html>
正如更多信息,一旦我在我的电脑上连接了平板电脑,当我右键单击 1.pdf 并检查属性时,文件位置是 Computer\GT-P7510\Tablet
当我在平板电脑上运行这个项目并点击打开的链接时。 adobe 阅读器应用程序在主页上打开,显示“无法打开文档”。出了什么问题,为什么 PDF 不能用 Adobe Reader 打开?如果可以,请提供帮助,我将不胜感激。
------------------------编辑1后---------- -------------------------------------------------- ------------------------------------
我发现了正在发生的特定错误。错误是 Object # has no method 'exec'
【问题讨论】:
-
一般来说,将
/sdcard/硬编码到文件路径中是不好的做法。在 java 中你会使用Environment.getExternalStorageDirectory()。我不知道在phonegap中是否有等价物。但我的猜测是您的设备没有将其外部存储标记为/sdcard/,因此您正试图让它加载一个不存在的文件。 -
我认为 getExternalStorageDirectory() 仅适用于 appcelerator。
-
不,它是 Java API 的一部分,appcelerator 可能会使用它(不过我不知道,除了本机之外没有任何经验。)它看起来像你链接的 github 页面上的示例您可能需要在文件路径前加上
file://,因此您可以尝试将网址更改为file:///sdcard/Course Content Files/1.pdf请注意,即使这在您的设备上有效,由于外部目录不在某些位置,它仍然会失败/sdcard/这就是 Environment API 存在的原因,这样您的应用就不必关心它的位置。 -
好的,所以基本上我应该将 /sdcard/ 替换为 /Environment.getExternalStorageDirectory/?
-
用 file:/// 替换它可以正常工作,我喜欢你。我一直在尝试这样做很长时间。放弃了几次。哦,上帝,谢谢你!
标签: javascript android html cordova pdf