Dostęp do interfejsów API Google

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."));
}