Ich versuche, Google Play Service in meiner Android-App zu verwenden. Wie im Google-Dokument angegeben, müssen wir überprüfen, ob die Google-API verfügbar ist, bevor wir sie verwenden. Ich habe nach einer Möglichkeit gesucht, dies zu überprüfen. Folgendes habe ich bekommen:
private boolean checkPlayServices() {
int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (resultCode != ConnectionResult.SUCCESS) {
if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
GooglePlayServicesUtil.getErrorDialog(resultCode, this,
PLAY_SERVICES_RESOLUTION_REQUEST).show();
} else {
Log.i(TAG, "This device is not supported.");
finish();
}
return false;
}
return true;
}
Wenn ich jedoch zur Google Api GooglePlayServicesUtil-Seite gehe, https://developers.google.com/android/reference/com/google/android/gms/common/GooglePlayServicesUtil
Ich finde alle Funktionen veraltet . Zum Beispiel die Methode
GooglePlayServicesUtil.isGooglePlayServicesAvailable (veraltet)
Und Google empfiehlt Folgendes:
GoogleApiAvailability.isGooglePlayServicesAvailable .
Wenn ich jedoch versuche, GoogleApiAvailability.isGooglePlayServicesAvailable zu verwenden, wird folgende Fehlermeldung angezeigt:
GooglePlayServicesUtil
weg (was für ein "kleines" Update als schlechte Praxis erscheint), aber ich sehe keineGoogleApiAvailability
Verwendung als Ersatz.Antworten:
Ich habe die Lösung gefunden. In der
GoogleApiAvailability
sind alle Methoden öffentliche Methoden, während inGooglePlayServicesUtil
allen Methoden statische öffentliche Funktionen sind.Um GoogleApiAvailability zu verwenden, ist der richtige Weg:
quelle
private final static int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
Die Klasse GooglePlayServicesUtil sollte nicht mehr verwendet werden!
So kann stattdessen die Klasse GoogleApiAvailability verwendet werden - wenn beispielsweise GCM (oder ein anderer Google-Dienst) benötigt wird:
AKTUALISIEREN:
REQUEST_GOOGLE_PLAY_SERVICES
ist eine ganzzahlige Konstante mit einem beliebigen Namen und Wert, auf die in deronActivityResult()
Methode verwiesen werden kann.Außerdem
this.onActivityResult()
ist es in Ordnung , den obigen Code einzugeben (Sie rufen auchsuper.onActivityResult()
an der anderen Stelle an).quelle
GOOGLE_PLAY_SERVICES_PACKAGE
Konstante aus der GoogleApiAvailability- Klasse zu übernehmen, sind Googles Art, Ihnen zu sagen: Verwenden Sie dieGooglePlayServicesUtil
Klasse nicht mehr.GoogleApiAvailability
Klasse nicht vorhanden ist? Wenn wir die Klasse auch innerhalb eines bedingten Ausdrucks statisch referenzieren, stürzt die App dann nicht ab?GoogleApiAvailability
ist Teil der Client-Bibliothek. Der Code wird also in die App kompiliert => Mach dir darüber keine Sorgen.Sie müssen stattdessen GoogleApiAvailability verwenden:
this
repräsentiert diecontext
.quelle
quelle
Ich habe dies als Spaß in der BaseActivity-Klasse hinzugefügt, um es an allen Orten zu verwenden
benutze es so
Oder Sie können es nach Ihren Wünschen anpassen.
quelle