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