[英]Crashing error - Google Maps API v2 for Android demo app
[英]Google maps on Android not working on app but demo is fine
我无法让谷歌地图在我的应用上运行。
我看到一个空白的屏幕; 没有网格显示,只有谷歌徽标和+/-缩放按钮。
我做了什么:
由于演示工作正常,我将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。
我也遇到了这个问题,花了我这么多时间来解决它,最后我已经完成了这些步骤,终于工作了!
不要忘记添加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.