Android上的Google地图不适用于应用程序,但演示效果不错

我无法让Google地图在我的应用上工作。

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

我做了什么:

  • 我已启用“Google地图Android API v2”API
  • 我已经将我的项目和演示项目一起添加到Google控制台上的API凭据列表中
  • 我还为Internet,位置com.google.android.providers.gsf.permission.READ_GSERVICES添加了所需的权限。
  • 即使添加了“MAPS_RECEIVE”权限的build议一些post
  • 还添加了“元数据”google_play_services_version

由于演示工作,我从字面上复制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.bd@42caa7b8 not retrying 10-02 12:21:45.361: D/REQUEST(5826): Retrying: com.google.maps.api.android.lib6.gmm6.ca@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.的结构。

我已经更新了我的项目结构以匹配清单,但是我仍然看到与以前相同的错误,没有任何变化。 我真的在海上,因为我不明白这里会发生什么事情。


有些帮助解决这个将不胜感激,谢谢!

Solutions Collecting From Web of "Android上的Google地图不适用于应用程序,但演示效果不错"

事实certificate,我在这里已经阅读了关于这个问题的n-1个问题。 最后,经过不断的search,我在这里偶然发现了@Jack的答案。

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

注:我没有试图保持代码行,并修改它使地图工作。 如果我需要/做,我会发表评论。

您需要将您的SHA1指纹添加到公共API访问。 转到eclipse>首选项。 Android>build立并复制你的默认日蚀SHA1指纹。

现在转到https://console.developers.google.comselect您的应用程序,“API和身份validation”>“凭据”>然后单击“编辑允许的android应用程序”,把你的SHA1 figerfirnt这样的:

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

那你的谷歌键? Manifest文件中的这一行:

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

我也在不断地挣扎着这样的行为。 在这种情况下,要validation的第一件事情是从debug.keystore文件获得的密钥确实是您向Google注册的密钥。 当您在本地debugging应用程序时,将使用此项。

但是请注意,当您释放应用程序时,您将需要另一个密钥库文件。 在签名时,您应该创build另一个密钥库,并使用Google进行注册。

我也有这个问题,花了我很多时间来解决它,最后我做了这些步骤,它终于工作了!

希望这可以帮助..

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

我build议你也包括这个:

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

用您的软件包名称replacexxx.xxxx.xxxx