安卓上的谷歌地图显示灰屏

4
我之前遇到过此问题,即 Google 地图显示灰屏且没有地图显示。
我通过在测试环境中安装谷歌服务来解决此问题,并且很好地解决了。
现在的问题是,从 Google Play 安装应用程序的用户也会看到相同的灰色屏幕(没有地图)。
我不能要求人们去下载 Google 服务以使他们的应用程序正常运行。
是否有办法将这些服务嵌入我的应用程序或任何其他方法来解决此问题?
谢谢。
我在 google_maps_api.xml 中有这个内容。
 <string name="google_maps_key" translatable="false" templateMergeStrategy="preserve">
     AIzaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 </string>

我在清单文件中也有这个

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

您需要在Google API面板中注册您的密钥库。您已经注册了一个调试密钥,因此您的测试应用程序可以正常工作。您的发布密钥也需要进行注册。 - jb15613
看看我的答案在这里...它可能会有所帮助 http://stackoverflow.com/questions/29782251/google-maps-in-an-android-app/29782436#29782436 - Charaf Eddine Mechalikh
对我来说,问题是因为Android Studio自动创建了错误的包名,而我在开发者控制台中放置了它,没有注意到这一点。它应该是com.myproject.name,但实际上是com.myproject.name.activities。对于任何遇到灰屏问题的人,请确保放置正确的包名,你可以在Android清单中找到它。 - Vlado Pandžić
4个回答

3

您需要检查用户是否已安装 Google Play 服务。

private static final int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;

private boolean checkPlayServices() {
    int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
    if (resultCode != ConnectionResult.SUCCESS) {
        if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
            GooglePlayServicesUtil.getErrorDialog(resultCode, this,
                    PLAY_SERVICES_RESOLUTION_REQUEST).show();
        }
        return false;
    }
    return true;
}

如果可以解决,Android将自动处理此问题的分辨率。


PLAY_SERVICES_RESOLUTION_REQUEST 是什么? - Ken
私有静态最终整型 PLAY_SERVICES_RESOLUTION_REQUEST = 9000; - AC-OpenSource

3

您是否遇到以下情况:

将Google Play服务版本添加到您的应用程序清单中

编辑应用程序的AndroidManifest.xml文件,在其中添加以下声明。这将嵌入应用程序编译时使用的Google Play服务版本。

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />

是的,我有这个<meta-data             android:name =“com.google.android.gms.version”             android:value =“@integer/google_play_services_version”/> - Ken
你可以前往Google Maps Android API v2查看是否有你所缺少的内容。 - Xcihnegn

2
请添加权限:
<permission
    android:name="com.pkg.map.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" >
</permission>

这里的com.pkg.map是包名,其中包含地图活动。


5
对于未来的访问者:这个权限现在完全没有必要。Google Play服务的最新更新3.1.59使它变得无用。因此,可以将其删除。 来源 https://dev59.com/dWUq5IYBdhLWcg3wC8Lx - Ken

2

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