我有一个非常简单的HTML5应用程序,用trigger.io编写,无法在Android 4.4下运行,错误表明无法访问本地内容。例如:
E/AndroidProtocolHandler( 2236): Unable to open content URL: content:////io.trigger.forge9aee7db8338b11e4b77d1231392b77b0/src/images/connect4.jpg
在Android 4.3下可以找到相同的代码。这适用于所有本地内容,包括图像,CSS和JavaScript。所有资源都使用相对路径引用,例如“images / image.jpg”。
我最好的猜测是,在较新版本的Android操作系统中存在访问策略更改,但我无法弄清楚细节。我已经确保代码中没有任何地方尝试访问外部资源。
答案 0 :(得分:2)
Antoine van Gelder对此非常有帮助。他的诊断绝对正确,jQuery Mobile正在重写资源的URL,这会导致更新版本的Android Chrome浏览器在访问资源时失败。生成的URL在协议之后包含四个斜杠:
内容:////io.trigger.forge9aee7db8338b11e4b77d1231392b77b0/src/resource.png
额外的斜杠会导致Webview失败。可能会过度检查是否存在正确性或安全隐患?
Antoine建议使用旧版本的jQuery Mobile或构建一个没有Base Tag的自定义jQuery Mobile可能会在某些情况下起作用,但在我的情况下这两种情况都不够。特别是,删除Base Tag也会删除我需要的其他一些功能。
另一种方法是对jQuery Mobile进行轻微破解。对于1.4.3版本,我执行了以下操作:
答案 1 :(得分:1)
看起来,从v1.3开始,jQuery Mobile会重写您文档中的网址,这会破坏Chrome浏览器Webview对应用沙箱中文件的访问权限。
您可以尝试使用jQuery Mobile开发人员提交错误报告,但要在短期内对其进行排序,您的最佳选择可能是:
1)回到jQuery Mobile 1.2.1
2)构建一个自定义版本的jQuery Mobile,它排除了一些导航功能。 (转到下载构建器(http://jquerymobile.com/download-builder/),向下滚动到"导航"并取消选择"基本标记"模块)
答案 2 :(得分:0)
这应该在JqueryMobile 1.4.4中修复。