В своем приложении для Android я использую Google Play Services для таких вещей, как: Chromecast, Карты и аналитика.
В моем файле build.gradle
я компилирую версию 12.0.0:
implementation "com.google.android.gms:play-services-cast-framework:12.0.0"
implementation "com.google.android.gms:play-services-cast:12.0.0"
implementation "com.google.android.gms:play-services-base:12.0.0"
implementation "com.google.android.gms:play-services-maps:12.0.0"
implementation "com.google.android.gms:play-services-analytics:12.0.0"
implementation "com.google.android.gms:play-services-vision:12.0.0"
implementation "com.google.android.gms:play-services-gcm:12.0.0"
Проблема заключается в том, что приложение вылетает, когда на устройстве не установлена версия 12 или новее.
Итак, я сделал следующее:
In AndroidManifest.xml
:
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
И небольшой класс, чтобы проверить, актуальны ли сервисы воспроизведения илиУстановлено:
public boolean checkIfInstalled(Context applicationContext) {
try {
GoogleApiAvailability googleApiAvailability = GoogleApiAvailability.getInstance();
int resultCode = googleApiAvailability.isGooglePlayServicesAvailable(applicationContext);
// Version is out of date
if (resultCode != ConnectionResult.SUCCESS) {
final AlertDialog.Builder builder = new AlertDialog.Builder(applicationContext);
builder.setMessage("Google Play Services is required to use this app. Install Play Services or update to the latest version to continue.");
builder.setPositiveButton("Go to Play store", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("PlayServicesCheck", "clicked on the button");
}
});
AlertDialog alertDialog = builder.create();
alertDialog.show();
return false;
}
return resultCode == ConnectionResult.SUCCESS;
} catch (Exception err) {
return false;
}
}
В onCreate (при запуске приложения) я вызываю эту функцию, чтобы проверить, все ли в порядке.Функция возвращает false, если она устарела.Итак, мой код работает на этом этапе.
@Override
protected void onCreate(Bundle savedInstanceState) {
boolean isInstalled = checkIfInstalled(getApplicationContext());
// this works, I get the right value back from the checkIfInstalled function
if (isInstalled) {
Log.i("PlayServicesCheck", "Installed");
// Do nothing
} else {
Log.i("PlayServicesCheck", "Not Installed");
// Give alert, stop everything else
}
super.onCreate(savedInstanceState);
}
Но как мне остановить запуск приложения, когда это происходит?Прямо сейчас он говорит: «версия устарела», но все равно продолжит запуск приложения, что приведет к падению.
Спасибо