无法将位置更改为本地文件,例如Phonegap 3.5中的cdvfile://path/index.html

时间:2014-09-01 01:58:04

标签: cordova phonegap-build

我的应用使用FileAPI在设备上复制文件。这在Phonegap 3.4.0和3.5.0中运行良好。

然后它通过执行window.location = "cdvfile://localhost/persistent/TEST/index.html";打开一个html文件(注意路径不是硬编码的,而是使用类似myDirEntry.toURL()的东西,并且3.4和3.5都给出了相同的路径)。

这在3.4.0(在几个版本的Android和iOS上测试)中运行良好,但它在3.5.0中不起作用(仅在Android 4.1.2和4.4.2上测试过)。

尝试更改位置时,没有任何反应。该应用程序保留在当前页面中,似乎没有异常抛出。

在这两种情况下,我都使用org.apache.cordova.file插件版本1.0.1(Phonegap Build上提供的插件)。

Phonegap 3.5.0中有什么变化吗?

2 个答案:

答案 0 :(得分:4)

出于某种原因,您只需在Phonegap 3.5(在Android上测试)中使用toNativeURL代替toURL

  • toURL给了我cdvfile://localhost/persistent/Path/To/Folder
  • toNativeURL给了我file:///storage/sdcard0/Path/To/Folder

使用toNativeURL有利于使用file协议而不是cdvfile,因此没有同源策略问题(参见我的其他问题AJAX blocked when using cdvfile - Phonegap)。

答案 1 :(得分:0)

如果文件名包含任何空格,则接受的答案将不起作用,因为toNativeURL包含url编码。 [Xcode 5.1及以下版本就是这种情况,因为数据存储在“Application Support”文件夹中。]

要解决此问题,请使用:

  • decodeURI(NativeURL);在javascript
  • filepath = [filepath stringByRemovingPercentEncoding];在Objective-C