繁体   English   中英

Android上的谷歌地图不适用于应用程序,但演示很好

[英]Google maps on Android not working on app but demo is fine

我无法让谷歌地图在我的应用上运行。

我看到一个空白的屏幕; 没有网格显示,只有谷歌徽标和+/-缩放按钮。

我做了什么:

  • 我启用了“Google Maps Android API v2”API
  • 我已将我的项目和演示项目添加到Google控制台上的API凭据列表中
  • 我还添加了Internet,location,com.google.android.providers.gsf.permission.READ_GSERVICES所需的权限。
  • 甚至添加了“MAPS_RECEIVE”权限,因为有些帖子建议
  • 还添加了'元数据'google_play_services_version

由于演示工作正常,我将MultiMapDemoActivity及其文件复制到我的项目中并尝试打开地图,但无济于事。

问题可能与问题有关。 然而,似乎他们根本无法获得地图。

这是我注意到的有趣的一点,我通常得到这个:

10-02 12:29:20.376: D/REQUEST(5826): Connection opened to:https://clients4.google.com/glm/mmap/api
10-02 12:29:20.376: D/REQUEST(5826): Open Connection

其次是:

10-02 12:21:45.361: D/REQUEST(5826): DRD(80): 62|132
10-02 12:21:45.361: D/REQUEST(5826): Close
10-02 12:21:45.361: D/REQUEST(5826): Error processing: com.google.maps.api.android.lib6.b.d@42caa7b8 not retrying
10-02 12:21:45.361: D/REQUEST(5826): Retrying: com.google.maps.api.android.lib6.gmm6.c.a@4296a530
  • 另外,不确定这是否相关,但是一旦我点击打开地图,或者在打开地图后点击地图并显示空白视图,我就会看到:

      10-02 13:03:32.978: E/DatabaseUtils(15468): Writing exception to parcel 10-02 13:03:32.978:/DatabaseUtils(15468): java.lang.SecurityException: Permission Denial: get/set setting for user asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL 

编辑#1

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

编辑#2另外,声明的包名是com.ABC(清单); 而我的项目的活动具有com.AB的结构。

我已经更新了我的项目结构以匹配清单,但我仍然看到与以前相同的错误,没有任何变化。 我真的在海上,因为我无法理解这里可能出现的问题。


一些帮助解决这个将不胜感激,谢谢!

事实证明,我在这里已经阅读了关于这个问题的n-1个问题。 最后,经过不断的搜索无处不在,我偶然发现了答案在这里通过@Jack。

基本上这一行: "HttpsURLConnection.setDefaultSSLSocketFactory(...)"是我的代码中的罪魁祸首。 我评论了一切,一切正常。

注意:我没有尝试保留代码行并修改它以使地图工作。 如果我需要/做,我会发表评论。

您需要将SHA1指纹添加到公共API访问。 转到eclipse>首选项。 Android>构建并复制默认的eclipse SHA1指纹。

现在转到https://console.developers.google.com选择您的应用,'API和auth'>'凭证'>并点击'编辑允许的Android应用程序'将您的SHA1 figerfirnt放入:

XX:XX:XX:XX:XX ... XX; com.your.pakage.app

你的谷歌钥匙怎么样? 清单文件中的这一行:

<meta-data android:name="com.google.android.maps.v2.API_KEY" ....

我也在不断地挣扎着这种行为。 在这种情况下,您要验证的第一件事是您的debug.keystore文件中的密钥确实是您在Google上注册的密钥。 在本地调试应用程序时将使用此密钥。

但请注意,在发布应用程序时,您将需要另一个密钥库文件。 在签名时,您应该创建另一个密钥库,并将其注册到Google。

我也遇到了这个问题,花了我这么多时间来解决它,最后我已经完成了这些步骤,终于工作了!

  • 按照此处的相同步骤操作https://developers.google.com/maps/documentation/android/start
  • 如果您正在测试项目而不是在Play商店中安装应用程序时使用的发行证书,请使用调试证书指纹。
  • 不要忘记添加Google API的价值并将“API_VALUE”替换为它。

  • 将项目构建目标更改为Google API:项目>属性> android>目标。

希望这可以帮助..

根据Google文档,这些是您需要的权限:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- The following two permissions are not required to use
     Google Maps Android API v2, but are recommended. -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

我建议你也包括这个:

<uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>

在清单文件中添加这些内容

<permission
    android:name="xxx.xxxx.xxxx.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />


<uses-permission android:name="xxx.xxxx.xxxx.permission.MAPS_RECEIVE" />
<uses-permission android:name="xxx.xxxx.xxxx.permission.READ_GSERVICES" />

用您的包名替换xxx.xxxx.xxxx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM