Accesso alle API di Google

Per accedere alle API basate su Google Play Services nella tua app per Android, devi utilizzare gli oggetti client API. Questi oggetti gestiscono la connessione a Google Play Services, mettono in coda le richieste ed eseguono in ordine quando è disponibile una connessione. Puoi creare nuovi client API in base alle esigenze, poiché la loro creazione è economica.

Inizia

Prima di iniziare, assicurati di configurare Google Play Services nel progetto dell'app.

Per accedere a un servizio che non richiede l'autorizzazione, crea un'istanza di l'oggetto client del servizio, passando un Context o un Activity oggetto. Se necessario, agli utenti viene chiesto di eseguire l'upgrade di Google Play Services prima dell'esecuzione delle chiamate API.

Il seguente snippet di codice mostra come ottenere l'ultima posizione nota del dispositivo utilizzando il Fused Location Provider:

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

Per accedere alle API che richiedono l'autorizzazione dell'utente, segui la guida per autorizzare l'accesso ai dati utente di Google. Se utilizzi un'API che richiede un oggetto GoogleSignInAccount, utilizza il AuthorizationResult#toGoogleSignInAccount() metodo.

Verifica la disponibilità dell'API

Prima di abilitare una funzionalità che dipende da un'API Google Play Services, verifica se l'API è disponibile sul dispositivo chiamando checkApiAvailability().

Il seguente snippet di codice mostra come verificare se il Fused Location Provider è disponibile:

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