Stu*_*ing 24 android android-maps
我已经检查并仔细检查了我在Google控制台上注册的API密钥但是我仍然收到以下错误:
12-05 16:31:12.940: E/Google Maps Android API(12334): Failed to load map. Could not contact Google servers.
Run Code Online (Sandbox Code Playgroud)
我所看到的是放大/缩小按钮和MapView的背景但没有Map ??? !!!
有任何想法吗???
回答
我将在此发布,因为解决了我的问题的原因已在下面接受的答案的评论中说明.
这是READ_GSERVICES许可.出于某种原因,在开发人员网站上使用它们时未提及该权限.
Mat*_*ark 48
要在Android上设置Google Maps API v2,请确保您已完成以下所有步骤.
API访问的应用密钥
当Google要求提供应用程序证书的SHA1指纹时,您可能希望两次运行,一次用于您的debuging证书,一次用于您的发布证书.
keytool -list -v -keystore publishcert.keystore
keytool -list -v -keystore~/.android/debug.keystore
市场上应用程序的指纹与您刚刚测试的应用程序的指纹不同!
在Google API控制台上启用该服务
登录Google API控制台.
在服务页面上,找到Google Maps Android API v2.
注意 -然后Google Maps API v2是不同的Google Maps Android API v2
在API Access选项卡中,单击 Create new Android Key
添加证书签名以访问API.
yourrelease-fingerprint; com.example.project.package
yourdebug-fingerprint; com.example.project.package
您将获得生成的API访问密钥.
您可能需要先在API控制台中创建API项目
修改App Manifest
在<application>元素内添加API密钥.
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="yourapikey"/>
Run Code Online (Sandbox Code Playgroud)
添加以下权限:
<permission
android:name="com.example.project.package.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.example.project.package.permission.MAPS_RECEIVE"/>
<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"/>
Run Code Online (Sandbox Code Playgroud)
添加以下功能请求:
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
Run Code Online (Sandbox Code Playgroud)
小智 18
确保所有下面提到的要点都得到照顾:
1)启用了错误的服务.确保已启用" Google Maps Android API v2 ",而非" Google Maps API v2 "并重新生成API密钥.
2)将以下元素添加到清单中.将com.example.mapdemo替换为应用程序的包名称.
3)使用正确的证书和密钥.发布证书,当您在我的手机上运行应用程序时,调试期间无法正常工作.您必须使用调试密钥库证书指纹.
它可能是Manifest的一个问题.以下为我工作,具体permission.MAPS_RECEIVE解决了我遇到的类似问题:缩放按钮和myLocation显示,但地图没有瓷砖...
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.discos2.example"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<permission
android:name="com.discos2.example.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.discos2.example.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-feature
android:name="android.hardware.location"
android:required="false" />
<uses-feature
android:name="android.hardware.location.network"
android:required="false" />
<uses-feature android:name="android.hardware.location.gps" />
<uses-feature
android:name="android.hardware.wifi"
android:required="false" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<application
android:hardwareAccelerated="true">
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="__NEW_GOOGLE_MAPS_V2_KEY_GOES_HERE__" />
<activity
android:name=".ui.activities.MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27182 次 |
| 最近记录: |