Acessar APIs do Google

Para acessar APIs com tecnologia do Google Play Services no seu app Android, é necessário usar objetos de cliente da API. Esses objetos processam a conexão com os serviços do Google Play, enfileirando solicitações e as executando em ordem quando uma conexão está disponível. Você pode criar novos clientes de API conforme necessário, já que eles são baratos de criar.

Primeiros passos

Antes de começar, configure o Google Play Services no projeto do app.

Para acessar um serviço que não exige autorização, crie uma instância do objeto de cliente do serviço transmitindo um objeto Context ou Activity. Se necessário, os usuários vão receber uma solicitação para atualizar o Google Play Services antes de qualquer chamada de API ser executada.

O snippet de código a seguir mostra como acessar a última localização conhecida do dispositivo usando o provedor de localização unificado:

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

Para acessar APIs que exigem autorização do usuário, siga o guia para autorizar o acesso aos dados do usuário do Google. Se você estiver usando uma API que exige um objeto GoogleSignInAccount, use o método AuthorizationResult#toGoogleSignInAccount().

Verificar a disponibilidade da API

Antes de ativar um recurso que depende de uma API do Google Play Services, verifique se a API está disponível no dispositivo chamando checkApiAvailability().

O snippet de código a seguir mostra como verificar se o provedor de localização combinada está disponível:

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