【问题标题】:Google Maps Android API v2: Failed to Load Map. Could not contact Google ServersGoogle Maps Android API v2:加载地图失败。无法联系 Google 服务器
【发布时间】:2013-01-24 08:48:23
【问题描述】:

我正在尝试使用 Google Maps Android API v2,并且我已经从我的发布证书创建了 SHA1 密钥。

我已经阅读了来自 here 的 cmets 并做了一切正确的事情,包括在 Google 的说明 here 中未说明的 READ_GSERVICES 的权限

但是我仍然有错误

E/Google Maps Android API(12334):加载地图失败。不能 联系 Google 服务器。

如果我还有什么遗漏的话,无论如何可以启发我吗?

我也加入了这个:

<permission
      android:name="com.example.permission.MAPS_RECEIVE"
      android:protectionLevel="signature"/>
    <uses-permission android:name="com.example.permission.MAPS_RECEIVE"/>

和

<meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="my_api_key"/>

在我的应用标签中。

更新:刚刚设法消除了该错误,发现我输入了错误的 READ_GSERVICES。

但是,现在我遇到了这个问题:

01-24 16:58:08.628:E/Google Maps Android API(28025):授权 失败。

是什么导致了这个问题?我的 SHA1 是从我的发布证书中获得的,有错吗?

【问题讨论】:

  • 我的 git hub 上有一个地图应用程序的工作示例 - 请随意查看清单。 github.com/ChristopherTulip/MapHomeTest
  • 啊,谢谢你的帮助!意识到我错误地输入了我的 READ_GSERVICES 权限。现在我遇到了“授权失败”的错误......这是否指的是我的 API 密钥?我从我的签名证书中生成了 SHA1……这是错的吗?
  • 使用完全免费的解决方案而不是那种棘手的专有东西怎么样? “libwlocate”不仅用于使用 WLAN 进行位置评估,Android 类还支持 GPS 定位,显示/绘制 OSM/Google/卫星地图。没有密钥、哈希和身份验证令牌的所有内容;-)
  • 是的,身份验证失败是由于 API 密钥造成的 - 您是使用测试版本还是应用的已发布版本?在我进行开发时,我不得不从现有代码中重新创建我的项目,并要求谷歌提供一个新的 API 密钥,我将这些值替换为这些值并且它们起作用了。供参考(尽管它不推荐我所做的)developer.android.com/tools/publishing/…
  • @Elmi 感谢您的建议,但我不是为自己做,所以我对使用其他来源有更严格的要求,但无论如何谢谢 =)

标签: android android-maps-v2


【解决方案1】:

你解决问题了吗?可能是这个问题->

启用了错误的服务。确保启用了“Google Maps Android API v2”,而不是“Google Maps API v2”,然后重新生成 API 密钥。 (https://stackoverflow.com/a/13805807/1300982)

如果这是问题所在,请不要忘记重新生成 API 密钥。

【讨论】:

  • 谢谢。这解决了我的问题。忽略了有两个独立的api:-)
  • 很高兴,我能帮上忙!我也犯了同样的错误。感谢@Doctoror Drive 在另一篇文章中的回答。
  • 大家好,非常感谢您的帮助。如正确答案所述,我实际上将调试和发布模式的密钥混淆了,导致失败。我总是启用正确的服务。但很高兴这个答案也有助于解决您的问题! =)
【解决方案2】:

还有一点需要注意:我在两个不同的 API 项目中注册了相同的 SHA1 哈希。 (是的,我知道这很愚蠢,但我正在尝试不同的方法来解决问题。)

我在这里提到这一点,因为您可能已经正确配置了所有内容,但您在 Google 的 API 控制台上为您的项目拥有多个密钥。 (希望这个愚蠢的错误不会发生在你身上。)

【讨论】:

  • 抱歉大家回复晚了。看起来很愚蠢,这实际上是导致问题的原因!我需要一键调试和一键自动部署 apk。
【解决方案3】:

因为这次你正在使用

<permission
  android:name="com.example.permission.MAPS_RECEIVE"
  android:protectionLevel="signature"/>
<uses-permission android:name="com.example.permission.MAPS_RECEIVE"/>

你确定你的包名是com.example,如果不是,那么用实际的包名替换com.example

【讨论】:

    【解决方案4】:

    我遇到了同样的问题。我使用的是谷歌地图 api v1 密钥。我用 google maps android api v2 key 切换它并解决了问题。

    【讨论】:

      【解决方案5】:

      确保为不同的应用程序生成不同的密钥。

      【讨论】:

        【解决方案6】:

        我遇到了同样的问题,但没有任何效果。然后我在应用程序管理器中找到了 Google Play Services 并清除了数据。突然,新的 API 密钥开始工作了!

        【讨论】:

          【解决方案7】:

          如果您使用 Xamarin,请记住使用存储在以下位置的 debug.keystore 创建 API 密钥:

          Windows 用户: C:\Users[USERNAME]\AppData\Local\Xamarin\Mono for Android\debug.keystore

          操作系统: Users/[USERNAME]/.local/share/Xamarin/Mono for Android/debug.keystore

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多