javascript - PhoneGap/Cordova 编译的 Android 应用程序不加载外部 URI

标签 javascript android cordova google-maps phonegap-build

我正在尝试制作一个简单的地理定位应用程序。本地地理定位工作正常,因为坐标正在传入。我很难加载谷歌地图,like in the Simple Markers example here .

Turns out you have to whitelist external domains 。没问题,我将以下内容添加到我的 config.xml 中(在phonegap应用程序的根目录中):

<access origin="*" />
<access origin="*://*.googleapis.com/*" subdomains="true" />
<access origin="*://*.gstatic.com/*" subdomains="true" />
<access origin="*://*.google.com/*" subdomains="true" />
<access origin="*://*.googleusercontent.com/*" subdomains="true" />

为了以防万一,我在 <platform name="android"> 下添加了相同的内容。然后我把它去掉了。依然没有。

然后我让应用程序显示一个简单的图像;应用程序的 HTML 部分如下所示:

<body>
    <span><img src="https://maps.gstatic.com/mapfiles/api-3/images/spotlight-poi_hdpi.png" alt="" /></span>
    <div id="map"></div>
</body>

如果我在浏览器中打开这个文件,那就没问题了:

enter image description here

但是当我编译应用程序并在平板电脑上打开它时,呃哦:

enter image description here

看来访问权限设置不正确。图像损坏,googleapis.com永远不会加载,我的 map 也永远不会出现。

Here is a pastebin我的根config.xml文件。

请帮我弄清楚为什么 Android 应用程序拒绝在 PhoneGap/Cordova 上下文中加载外部网址。

我的赌注是一些我不知道的模糊权限。我已经用头撞墙有一段时间了,非常感谢一些帮助。提前致谢。

最佳答案

鉴于您已将 * 作为来源列入白名单,您甚至不需要 Google 来源。您是否尝试过从 Chrome 检查该应用程序?在桌面浏览器中转到 chrome://inspect,如果设备已连接到您的计算机,您可以从那里检查应用程序。

检查器中的控制台应显示您的请求所产生的任何错误。我猜您的内容安全策略阻止了该请求。最新版本的白名单文档位于 https://github.com/apache/cordova-plugin-whitelist 。在自述文件的底部,您将看到一些内容安全策略的示例。我建议将以下内容添加到您的index.html中:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com; style-src 'self' 'unsafe-inline'; media-src *">

关于javascript - PhoneGap/Cordova 编译的 Android 应用程序不加载外部 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37017639/

相关文章:

javascript - 如何在表单提交时通过 jQuery 阻止西里尔文 unicode

javascript - 为什么 Typescript 在转译代码中将 .default() 添加到类构造函数中?

android - 用户在android中编辑文本时按回车键时换行

javascript - Cordova/Phonehap - 从 config.xml 获取应用程序版本号

ios - 在 Xcode 中创建 Sencha Touch、Phone Gap 项目

android - 如何使用PhoneGap读写内部数据库?

用于在表单中手动输入 url 的 javascript url split

javascript - 检索特定的播放列表缩略图时,它没有获得视频的观看和描述

java - LibGdx Android 游戏在恢复时崩溃并出现奇怪的键码 (1026)

java - 从外部存储器导入到 ListView 时如何获取不同的文件名