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

时间:2014-10-02 07:31:55

标签: android google-maps

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

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

我做了什么:

  • 我有#34; 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及其文件复制到我的项目中并尝试打开地图,但无济于事。

问题可能与this问题有关。但是,似乎他们根本无法使用地图。

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

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.A.B.C(清单);而我的项目的活动具有com.A.B ..

的结构

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


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

6 个答案:

答案 0 :(得分:3)

事实证明,我在这里已经阅读了有关此问题的n-1个问题。最后,在连续搜索到处后,我偶然发现了@Jack的答案here

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

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

答案 1 :(得分:2)

您需要将SHA1指纹添加到公共API访问。 去eclipse&gt;喜好。 Android&gt;构建并复制默认的日食SHA1指纹。

现在转到https://console.developers.google.com选择您的应用,'API和auth'&gt; '凭证'&gt;然后单击“编辑允许的Android应用程序”,将您的SHA1格式化为:

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

答案 2 :(得分:1)

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

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

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

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

答案 3 :(得分:1)

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

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

  • 将您的项目构建目标更改为Google API:项目&gt;属性&gt; android&gt;目标。

希望这会有所帮助..

答案 4 :(得分:0)

根据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"/>

答案 5 :(得分:-3)

在清单文件中添加

<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替换为您的包名