授权失败。有关如何正确设置地图的信息,请参阅https://developers.google.com/maps/documentation/android/start。
确保以下内容与API控制台中的内容相对应:程序包名称:com.company.app
,API密钥:AIzaSyC***OsTeo
,证书指纹:4E5285***6BF53ED3
无法联系Google服务器。建立连接时将进行另一次尝试。
无法加载地图。联系Google服务器时出错这可能是一个身份验证问题(但可能是由于网络错误)。
我知道关于这个问题还有更多问题。 但我似乎无法让地图视图起作用。结果是一个空的地图视图(带有缩放按钮)。
我做了什么:
- 下载/安装google-play-services
- 将google-play-services.jar
添加到libs/
- 在code.google.com/apis/console中启用Google Maps API v2
- 设置正确的权限
这就是我的清单的样子:
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<permission
android:name="com.company.app.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.company.app.permission.MAPS_RECEIVE" />
<application ...>
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyC***OsTeo" />
</application>
Google API控制台api访问权限如下所示:
Key for Android apps (with certificates)
API key: AIzaSyC***OsTeo
Android apps: 4E:52:85:***6B:F5:3E:D3;com.company.app
Activated on: Jun 18, 2013 11:07 PM
Activated by: my@email.com – you
还有一些代码(我无法理解为什么会导致授权错误):
FragmentManager fragmentManager = super.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
SupportMapFragment fragment = new SupportMapFragment();
fragmentTransaction.replace(R.id.mapContainer, fragment);
fragmentTransaction.commit();
正如您所看到的,我收到一条错误消息,指出包名称,API密钥和证书指纹与Google服务器不对应。但就像我上面写的那样,那些值确实匹配......
答案 0 :(得分:78)
在Google Maps Android API v2
中激活Google API's console
服务。此外,在进行更改后,请在设备/模拟器上完全重新安装应用程序。
答案 1 :(得分:10)
对我来说,帮助一下,如果简单: 当您在Android Studio中工作时,您可以在文件google_maps_api.xml中编写Google API密钥,但Android Studio仅在Project Manager中显示(调试)版本的密钥文件。您需要将密钥放在
中\应用\ SRC \释放\水库\值\ google_maps_api.xml
文件(就像你把钥匙放在
中一样)\应用\ SRC \调试\ RES \值\ google_maps_api.xml
)
答案 2 :(得分:8)
设置API密钥时,软件包名称是package
上manifest
属性的值,而不是应用程序名称。
这(com.foo
):
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.foo"
不是这个(com.foo.MyApplication
):
<application
android:name="com.foo.MyApplication"
答案 3 :(得分:4)
我遇到了同样的问题,但是已经激活了正确的api。问题是我在获取SHA1时使用了错误的密钥库文件。我使用了发布密钥库,而不是我需要使用:
keytool -list -v -keystore debug.keystore
在这个文件上(mac osX位置):
~/.android/debug.keystore
这给了我另一个我在谷歌控制台输入的sha1,现在它可以工作了。
答案 4 :(得分:3)
确保以下事项:
https://code.google.com/apis/console/?noredirect
Click on Services(Left side panel) -> Enable Google Maps Android API v2
要获取SHA1密钥,您可以使用:以下命令 此命令将生成密钥库
keytool -genkey -v -keystore GoogleMapV2.keystore -alias GoogleMapV2 -keyalg RSA - keysize 2048 -validity 10000
此命令提供SHA1密钥和其他信息
keytool -list -v -keystore ~/path/to/GoogleMapV2.keystore -alias GoogleMapV2 -storepass any-password -keypass any-password i.e :
68:1C:74:24:7B:1F:9C:71:76:DD:69:4F:F2:8F
:<application> </application>
标记内的密钥
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="YOUR KEY" />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<application> </application>
标记之外的权限,位于顶部
<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" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<!--
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" />
注意: 不要使用Eclipse或模拟器运行App,通过创建运行到真实设备 不使用eclipse的apk不会使用不正确的调试密钥。
VkJ
答案 5 :(得分:2)
请确保在Google开发者控制台/凭据/包名称中正确输入您的包名称。它必须是您的应用程序顶级包名称,例如。 com.company.appname不是com.company.appname.ui.activity.maps。我按照https://developers.google.com/maps/documentation/android/start的说明,但在嵌套包中创建了Activity。谷歌网页输入了嵌套包名称,我遇到了这个错误。
答案 6 :(得分:1)
除了我的观察之外,我没有这方面的证据,但看起来API API在设置后可能需要几分钟才能激活。
有点耐心似乎对我有用!
答案 7 :(得分:1)
要弄清楚。如果在android sdk上调试您的应用时,地图活动未显示任何错误,但在您安装apk时却未显示任何错误并给出此错误:
07-02 03:18:36.467 25914-26028 /? E / Google Maps Android API:授权失败。请参阅 https://developers.google.com/maps/documentation/android-api/start的 如何正确设置地图。 07-02 03:18:36.470 25914-26028 /? E / Google Maps Android API:在Google Developer Console中 (https://console.developers.google.com) 确保已启用“ Google Maps Android API v2”。 确保存在以下Android密钥: API密钥:YOUR_KEY_HERE Android应用程序(;):
解决方案将是: 将密钥放在:\ app \ src \ release \ res \ values \ google_maps_api.xml
您在以下位置的\ p \ src \ debug \ res \ values \ google_maps_api.xml
如here
答案 8 :(得分:1)
如果您选择了制作API密钥的快速途径,请检查自动创建的软件包名称。我的软件包名称后附加了.function,这似乎是问题所在。 https://console.developers.google.com/apis/credentials/
答案 9 :(得分:1)
我在寻求解决方案后与他们取得了票证,我从Google Map支持团队得到了这个答案: