class MyActivity extends Activity { final int ANY_INTEGER_REALLY = 16041982; final int REQUEST_CODE_GMS_CHECK = ANY_INTEGER_REALLY; final int AVAILABLE = Activity.RESULT_OK; final int UNAVAILABLE = Activity.RESULT_FIRST_USER + 1; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState == null) { startGmsCheck(); } } void startGmsCheck() { final com.google.android.gms.common.GoogleApiAvailability apiAvailability = com.google.android.gms.common.GoogleApiAvailability.getInstance(); final int availabilityCheckResult = apiAvailability.isGooglePlayServicesAvailable(this); if (availabilityCheckResult == com.google.android.gms.common.ConnectionResult.SUCCESS) { onActivityResult(REQUEST_CODE_GMS_CHECK, AVAILABLE, null); } else if ( apiAvailability.isUserResolvableError(availabilityCheckResult) && apiAvailability.showErrorDialogFragment( this, availabilityCheckResult, REQUEST_CODE_GMS_CHECK)) { // user can do something about the missing GMS on the device -> receive the result via the activity's onActivityResult() } else { onActivityResult( REQUEST_CODE_GMS_CHECK, UNAVAILABLE, null); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_GMS_CHECK) { if (resultCode == AVAILABLE) { continueWithGmsFeatures(); } else {(); continueWithoutAnyMobileServicesFeatures(); } } } } }