如何通过android中的代码检查Google Play服务的启用/禁用

如何通过android中的代码检查Google Play服务的启用/禁用,android,google-cloud-messaging,google-play-services,Android,Google Cloud Messaging,Google Play Services,我需要检查mobile是否已启用/禁用/可用/未安装播放服务 我使用以下代码 final int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this); if (status != ConnectionResult.SUCCESS) { Log.e(TAG, GooglePlayServicesUtil.getErrorString(status));

我需要检查mobile是否已启用/禁用/可用/未安装播放服务

我使用以下代码

final int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
        if (status != ConnectionResult.SUCCESS) {
            Log.e(TAG, GooglePlayServicesUtil.getErrorString(status));
                      return false;
        } else {
            Log.i(TAG, GooglePlayServicesUtil.getErrorString(status));
                       return true;
        }

即使播放服务处于禁用状态,状态也返回为“2”。如何克服这个问题?

你的方法很好。状态“2”表示Google Play服务可用,但需要更新。检查ConnectionResult类中所有可能的状态:

public static final int SUCCESS = 0;
public static final int SERVICE_MISSING = 1;
public static final int SERVICE_VERSION_UPDATE_REQUIRED = 2;
public static final int SERVICE_DISABLED = 3;
public static final int SIGN_IN_REQUIRED = 4;
public static final int INVALID_ACCOUNT = 5;
public static final int RESOLUTION_REQUIRED = 6;
public static final int NETWORK_ERROR = 7;
public static final int INTERNAL_ERROR = 8;
public static final int SERVICE_INVALID = 9;
public static final int DEVELOPER_ERROR = 10;
public static final int LICENSE_CHECK_FAILED = 11;
public static final int CANCELED = 13;
public static final int TIMEOUT = 14;
public static final int INTERRUPTED = 15;
public static final int API_UNAVAILABLE = 16;
public static final int SIGN_IN_FAILED = 17;

对于那些试图找出如何检查google play服务是否已启用的人,请注意上述方法

GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
现在不推荐使用。改用GoogleAppAvailability的实例

GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(getActivity());

我正在使用onActivityResult处理此案例

public void callMarketPlace() {
    try {
//if play services are disabled so it will return request code 1 and result code 0 in OnActivity result.
        startActivityForResult(new Intent(Intent.ACTION_VIEW,
                Uri.parse("market://details?id="+ "com.google.android.gms")), 1);
    }
    catch (android.content.ActivityNotFoundException anfe) {
        startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 1);

    }
}
论活动结果

 @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
 boolean isEnable = false;

    super.onActivityResult(requestCode, resultCode, data);

   if (requestCode == 1) {
        if (resultCode == 0) {
            if (isEnable){
                isEnable = false;
            } else {
               Intent intent = new Intent(); intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                Uri uri = Uri.fromParts("package", "com.google.android.gms", null); intent.setData(uri);
                startActivityForResult(intent,1);
                isEnable = true;

            }
        }
    }
}

是 啊但是,即使该服务是从后台应用程序手动禁用的,它仍然返回2而不是3。如果两者都是呢?您的播放服务是否同时被禁用和未更新?该方法无法返回两个状态,因此它返回其中一个?@Singed如果两者都是,它返回“SERVICE\u VERSION\u UPDATE\u REQUIRED=2”@Singed我知道它很晚了,但我遇到了同样的问题。我这里有一个解决办法