我无法让谷歌地图在我的应用上运行。
我看到一个空白的屏幕;没有网格显示,只有谷歌徽标和+/-缩放按钮。
我做了什么:
由于演示工作正常,我将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 ..
的结构我已经更新了我的项目结构以匹配清单,但我仍然看到与以前相同的错误,没有任何变化。我真的在海上,因为我无法理解这里可能出现的问题。
一些帮助解决这个问题将不胜感激,谢谢!
答案 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)
我也遇到了这个问题,花了我这么多时间来解决它,最后我已经完成了这些步骤,终于工作了!
不要忘记添加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
替换为您的包名