真实的安卓设备上Google地图无法显示,但模拟器可以正常工作

3

你好,

我正在尝试让地图正常工作。在 Nexus 6 模拟器上它似乎可以很好地运行,但是当我在 Moto G 或者 Samsung Galaxy 上运行它时,地图完全是空白的,只有谷歌标志在右下角。

我已经生成了一个 google maps key 并将其放入 google_maps_api.xml 文件中。我需要生成 SHA-1 证书指纹吗? 如果是,我该如何执行?

查看答案:https://stackoverflow.com/a/33691443/5387193 但我不太理解这些说明。

这是我的日志: http://textuploader.com/52xzy

编辑1: 在 AndroidManifest.xml 中添加了一行。

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

目前这个应用在我的Moto G手机上可以使用,但是在我的Samsung手机上却不能。我认为这是因为我还没有接受敏感信息权限(ACCESS_FINE_LOCATION)。

我正在开发的这个应用程序不需要知道用户的GPS位置,所以我实际上不需要这个敏感信息 - 有没有一种简单的方法来删除此功能和权限?

我认为这个权限是造成问题的原因。

编辑2: 我已经得到了代码:

<meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="@string/google_maps_key" />

在我的AndroidManifest.xml文件中,@string/google_maps_key是我生成的正确密钥。我已经生成了SHA1指纹以获取此密钥,但需要在代码中放置该指纹吗?
我还没有生成发布密钥,我认为这只是一个调试密钥。您觉得这可能是问题所在吗?
我将安装Google Play服务并查看其对此的影响。
第三个编辑: 在三星手机上卸载并重新安装Google Play服务后,现在它可以正常工作了。

有没有可能将那些日志重新格式化为代码,这样就可以通过换行符实际阅读了? - Doug Stevenson
2个回答

2

您的logcat中这一行似乎是问题所在:

02-23 10:02:01.591 5760-5760/com.companyperth.companytools E/GMPM: GoogleService failed to initialize, status: 10, Missing an expected resource: 'R.string.google_app_id' for initializing Google services.  Possible causes are missing google-services.json or com.google.gms.google-services gradle plugin.

看起来Google Play服务没有正确设置。您需要获取google-services.json并将其放入您的项目中。要正确设置Google Play服务,请参见Android的Google API
如果您正在使用Google Maps for Android,则需要生成SHA1指纹才能获取Android密钥。请参见获取API密钥-适用于Android的Google Maps。但是,如果您正在使用集成到Android中的Google Maps Javascript API,则不需要生成SHA1指纹,因为您将使用服务器密钥。

0
尝试更新您的谷歌地图。我认为那就是问题所在。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接