Aby uzyskać dostęp do interfejsów API obsługiwanych przez Usługi Google Play w aplikacji na Androida, musisz używać obiektów klienta API. Te obiekty obsługują połączenie z usługami Google Play, ustawiając prośby w kolejce i wykonywając je w kolejności, gdy jest dostępne połączenie. W razie potrzeby możesz tworzyć nowych klientów API, ponieważ ich tworzenie jest tanie.
Rozpocznij
Zanim zaczniesz, skonfiguruj Usługi Google Play w projekcie aplikacji.
Aby uzyskać dostęp do usługi, która nie wymaga autoryzacji, utwórz instancję obiektu klienta usługi, przekazując obiekt Context
lub Activity
. W razie potrzeby użytkownicy zostaną poproszeni o zaktualizowanie usług Google Play, zanim zostaną wykonane jakiekolwiek wywołania interfejsu API.
Ten fragment kodu pokazuje, jak uzyskać ostatnią znaną lokalizację urządzenia za pomocą dostawcy złączonej lokalizacji:
Kotlin
// Code required for requesting location permissions omitted for brevity. val client = LocationServices.getFusedLocationProviderClient(this) // Get the last known location. In some rare situations, this can be null. client.lastLocation.addOnSuccessListener { location : Location? -> location?.let { // Logic to handle location object. } }
Java
// Code required for requesting location permissions omitted for brevity. FusedLocationProviderClient client = LocationServices.getFusedLocationProviderClient(this); // Get the last known location. In some rare situations, this can be null. client.getLastLocation() .addOnSuccessListener(this, location -> { if (location != null) { // Logic to handle location object. } });
Aby uzyskać dostęp do interfejsów API, które wymagają autoryzacji użytkownika, postępuj zgodnie z instrukcjami dotyczącymi autoryzacji dostępu do danych użytkownika Google.
Jeśli używasz interfejsu API, który wymaga obiektu GoogleSignInAccount
, użyj metody AuthorizationResult#toGoogleSignInAccount()
.
Sprawdzanie dostępności interfejsu API
Zanim włączysz funkcję, która zależy od interfejsu API Usług Google Play, sprawdź, czy interfejs API jest dostępny na urządzeniu, wywołując checkApiAvailability()
.
Ten fragment kodu pokazuje, jak sprawdzić, czy dostawca złączonej lokalizacji jest dostępny:
Kotlin
fun getLastLocationIfApiAvailable(context: Context?): Task<Location>? { val client = getFusedLocationProviderClient(context) return GoogleApiAvailability.getInstance() .checkApiAvailability(client) .onSuccessTask { _ -> client.lastLocation } .addOnFailureListener { _ -> Log.d(TAG, "Location unavailable.")} }
Java
public Task<Location> getLastLocationIfApiAvailable(Context context) { FusedLocationProviderClient client = getFusedLocationProviderClient(context); return GoogleApiAvailability.getInstance() .checkApiAvailability(client) .onSuccessTask(unused -> client.getLastLocation()) .addOnFailureListener(e -> Log.d(TAG, "Location unavailable.")); }