谷歌地理编码api在安卓移动应用程序中不起作用,而在ripple系统中起作用

Google geocoding api not working in Android mobile applications, while it is working on system in ripple

本文关键字:不起作用 而在 ripple 起作用 系统 应用程序 移动 编码 api 谷歌      更新时间:2023-09-26

我是移动应用程序开发(apache cordova)领域的新手。

我在开发天气应用程序时遇到了谷歌地理编码api的问题。该代码在我的系统上运行良好,但在android设备上不起作用。

我无法在我的android手机中获取json结果对象,同时使用任何位置的pin代码检索纬度和经度。

如果有任何调试过程来找出错误所在,有人能帮我吗!?

下面是我用来获取位置坐标的查询字符串。

http://maps.googleapis.com/maps/api/geocode/json?address=50001&传感器=真实

提前谢谢。

以下是我在元标记中所做的更改,其中我提到了从中提取数据的源。。

以下是在apachecordova(index.html)中创建新项目时出现的默认元标记

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

下面是index.html中修改后的元标记,我们需要提到从中获取数据的api源。

<meta http-equiv="Content-Security-Policy" content="* 'self' data: gap: https://ssl.gstatic.com https://query.yahooapis.com https://maps.googleapis.com https://api.openweathermap.org/ 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">

对于调试,Chrome远程调试器/检查工具非常出色,可以让您查看设备上的JS控制台,并像检查任何其他网页一样检查Cordova应用程序中的web视图。

要使用这些,您需要在Android设备上打开开发者/远程USB调试,并通过USB电缆将其连接到计算机。然后Chrome应该能够将其视为可远程检查的web视图。

有关设置Chrome远程调试器的详细信息,请访问此处。

您的实际问题可能是内容安全策略/白名单插件。默认情况下,index.html中的内容安全策略元标记(由Cordova CLI在Cordova 5或更高版本中创建)将不允许远程Ajax请求。。。您可以使用connect-src子句将其配置为允许连接到要连接的一组服务器,或者使用*允许任何连接。为了安全起见,最好明确列出要连接的源。

要做到这一点,请在<head>元素的index.html中添加类似的内容:

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

这将为maps.googleapis.com启用Ajax。这里有一篇全面的博客文章讨论内容安全策略。

相关文章: