【问题标题】:Cannot change location to local file eg cdvfile://path/index.html in Phonegap 3.5无法将位置更改为本地文件,例如 Phonegap 3.5 中的 cdvfile://path/index.html
【发布时间】:2014-09-01 01:58:04
【问题描述】:

我的应用使用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 有什么变化吗?

【问题讨论】:

    标签: cordova phonegap-build


    【解决方案1】:

    由于某种原因,您只需要在 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)。

    【讨论】:

      【解决方案2】:

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

      要解决这个问题,请使用:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 2012-04-12
        • 2014-05-12
        • 2018-02-28
        • 2018-12-28
        相关资源
        最近更新 更多