Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在运行时检查Google Play服务的兼容性?_Android_Google Maps_Google Play Services - Fatal编程技术网

Android 如何在运行时检查Google Play服务的兼容性?

Android 如何在运行时检查Google Play服务的兼容性?,android,google-maps,google-play-services,Android,Google Maps,Google Play Services,我有一个Android应用程序,它使用Google的com.Google.Android.gms.maps.SupportMapFragment。在某些模拟器上,我遇到了一个问题,即显示以下消息而不是显示地图 你的应用程序名在Google Play服务中遇到问题。请再试一次 我检查了日志,发现了以下消息 GooglePlayServicesUtil:GooglePlayServices过时了。需要13400000,但找到12862027 据我所知,当模拟器上的Google Play Servic

我有一个Android应用程序,它使用Google的com.Google.Android.gms.maps.SupportMapFragment。在某些模拟器上,我遇到了一个问题,即显示以下消息而不是显示地图

你的应用程序名在Google Play服务中遇到问题。请再试一次

我检查了日志,发现了以下消息

GooglePlayServicesUtil:GooglePlayServices过时了。需要13400000,但找到12862027

据我所知,当模拟器上的Google Play Services版本太低,无法与正在使用的Google maps SDK兼容时,就会出现这种情况

我想做的是在应用程序启动时检查设备或模拟器上安装的Google Play Services版本是否足够,这样我就可以让用户纠正这种情况,而不是看到地图错误屏幕。我尝试了几种不同的兼容性检查方法,但在所有情况下,兼容性检查都会返回一个成功的结果,但当我导航到地图时,地图仍然显示一个错误

这是我在build.gradle中使用的映射依赖项

implementation "com.google.android.gms:play-services-maps:17.0.0"
在我的顶级build.gradle中,我有以下依赖项(尽管我认为这只是Firebase所需要的

classpath 'com.google.gms:google-services:4.3.3'
我还在清单中添加了google play服务版本,如下所述

这就是项目设置,现在我已经尝试确定Google Play Services在运行时是否与我的maps SDK版本兼容:

召唤

GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(applicationContext)
始终返回“success”响应,但当我启动包含SupportMapFragment的下一个活动时,仍然会看到错误消息

我也试过打电话

GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(applicationContext, version)
我不完全确定是否应该传递由返回的客户端版本

GoogleApiAvailability.getInstance().getClientVersion()
或者我是否应该通过

GoogleApiAvailability.getInstance().getApkVersion(applicationContext)
我是否应该传递添加到清单中的google play services整数

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

getApkVersion()
返回值12862027

由于日志状态:

需要13400000,但找到12862027

13400000从哪里来?我似乎无法从GoogleAppAvailability类中“获取”该值,而且我没有在任何代码中明确设置该值

我做错了什么?如何验证用户的Google Play Services版本是否支持我在运行时使用的maps SDK版本

编辑:
如果我将play services地图依赖项从17.0.0更改为16.0.0,地图将按预期在模拟器上显示。因此,模拟器无法显示地图并不是一个问题,只是它无法显示17.0.0,并且我尝试执行的检查似乎不起作用。

我也遇到了同样的问题。我一升级就开始检查ted从16岁映射到17岁。我不确定这是否是一个模拟器问题,或者实际设备是否会受到影响。
getApkVersion()