当我尝试加载supportMapFragment时,我在logCat中收到此消息:
Failed to load map. Error contacting Google servers. This is probably an authentication issue (but could be due to network errors).
我相信我的密钥是有效的,因为它适用于一部手机(galaxy s),但不适用于较旧的手机(optimus v)和较新的手机(galaxy s3)。我在清单中拥有所有必要的权限,我的网络连接很好,所以不确定为什么它可以在一部手机上工作而不是另一部手机。有什么想法吗?
答案 0 :(得分:4)
如果清单中的所有权限设置和API密钥都是正确的,那么如果您获得failed to load map
,则可能是因为某种先前使用过的错误值的缓存。在这种情况下,请在您遇到此问题的手机上完全卸载该应用,然后重新安装。
如果在不卸载应用程序的情况下重新安装,则错误将持续存在。测试此效果的另一种方法是,如果您有一个正常工作的地图应用程序,那么即使您使API密钥错误,除非您卸载应用程序并重新安装错误的应用程序,否则使用错误密钥的新应用程序将继续有效
答案 1 :(得分:2)
对我来说,失去了许可:
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
添加它修复了问题
答案 2 :(得分:2)
如前所述,tony之前描述的其他所有内容已正确配置但您仍然遇到此错误,而不是卸载和安装,您只需清除应用程序数据。
我找到了可靠地重现这个问题和解决方案的步骤(对我有用):
修改强>
此问题可能已修复:https://code.google.com/p/gmaps-api-issues/issues/detail?id=6099 如果是这样,我仍然不清楚此修复程序包含哪个版本的google-play-services API。
答案 3 :(得分:1)
您正在测试应用程序的设备需要拥有已登录的Google帐户。您在所有经过测试的设备上都有活动帐户吗?是否已在所有设备上安装了播放服务?
答案 4 :(得分:0)
如果您的项目存在hostnameverifier
问题,也会出现此问题。
我使用以下解决方案:
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
@Override`enter code here`
public boolean verify(String hostname, SSLSession arg1) {
if (hostname.equalsIgnoreCase(arg1.getString("")) {
return true;
} else {
return false;
}
}
});