检测已安装的播放服务并播放应用中使用的服务

Ari*_*Roy 4 android firebase google-play-services

是)我有的

我的应用程序严重依赖Google Play服务(适用于Firebase),因此我需要用户的设备安装Play服务.更重要的是,设备中安装的Play服务版本应该等于或高于我在我的应用中使用的Play服务.

我想要的是

如果用户使用我在我的应用中定位的旧版Play Services版本,我想在我的应用的启动画面中显示一条消息(可能是对话框或小吃吧).

与目前一样,我在我的应用中使用的Play服务版本是10.0.1.这显然是版本名称.

我知道我能做到这一点,

int v = getPackageManager().getPackageInfo("com.google.android.gms", 0 ).versionName;
Run Code Online (Sandbox Code Playgroud)

但我无法比较设备中安装的Play服务版本和我正在使用的Play服务?我应该使用versionCode而不是versionName吗?如果是这样,我如何知道我正在使用的Play服务的versionCode?

或者有不同的(或更好的)方法吗?

Usm*_*uri 11

这是我使用的方法..干杯

public static boolean checkPlayServices(Context context) {
    final int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
    GoogleApiAvailability api = GoogleApiAvailability.getInstance();
    int resultCode = api.isGooglePlayServicesAvailable(context);
    if (resultCode != ConnectionResult.SUCCESS) {
        if (api.isUserResolvableError(resultCode))
            api.getErrorDialog(((Activity) context), resultCode, PLAY_SERVICES_RESOLUTION_REQUEST).show();
        else {
            showToast(context, "This device is not supported.", true);
            ((Activity) context).finish();
        }
        return false;
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

  • 要稍微扩展这个答案,您可以检查以下条件`resultCode == SERVICE_VERSION_UPDATE_REQUIRED`.有关结果代码及其含义的完整列表,您可以查看[文档](https://developers.google.com/android/reference/com/google/android/gms/common/ConnectionResult) (4认同)