Dostęp do interfejsów API Google

Aby uzyskać dostęp do interfejsów API opartych na Usługach Google Play w aplikacji na Androida, musisz używać obiektów klienta API. Te obiekty obsługują połączenie z Usługami Google Play, kolejkowanie żądań i wykonywanie ich w odpowiedniej kolejności, gdy połączenie jest dostępne. W razie potrzeby możesz tworzyć nowych klientów API, ponieważ ich tworzenie jest niedrogie.

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 są proszeni o uaktualnienie Usług Google Play przed wykonaniem wywołań interfejsu API.

Poniższy fragment kodu pokazuje, jak uzyskać ostatnią znaną lokalizację urządzenia za pomocą połączonego dostawcy 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 autoryzowania 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 jest on dostępny na urządzeniu, wywołując checkApiAvailability().

Poniższy fragment kodu pokazuje, jak sprawdzić, czy połączony dostawca 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."));
}