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, la messa in coda delle richieste e la loro esecuzione in ordine quando è disponibile una connessione. Puoi creare nuovi client API in base alle tue esigenze, in quanto sono economici da creare.
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 dell'oggetto client del servizio, passando un oggetto Context
o Activity
. Se necessario, agli utenti viene chiesto di eseguire l'upgrade di Google Play Services prima dell'esecuzione di qualsiasi chiamata API.
Il seguente snippet di codice mostra come ottenere l'ultima posizione nota del dispositivo utilizzando il fornitore di geolocalizzazione combinata:
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 metodo AuthorizationResult#toGoogleSignInAccount()
.
Verifica la disponibilità dell'API
Prima di attivare una funzionalità che dipende da un'API Google Play Services, controlla se
l'API è disponibile sul dispositivo chiamando
checkApiAvailability()
.
Il seguente snippet di codice mostra come verificare se il fornitore di servizi di geolocalizzazione combinati è 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.")); }