Доступ к API Google

Для доступа к API, работающим на базе сервисов Google Play , в вашем Android-приложении необходимо использовать объекты API-клиентов. Эти объекты обрабатывают подключение к сервисам Google Play, ставят запросы в очередь и выполняют их по порядку, когда соединение становится доступным. Вы можете создавать новые API-клиенты по мере необходимости, поскольку их создание обходится недорого.

Начать

Прежде чем начать, убедитесь, что в вашем проекте приложения настроены сервисы Google Play .

Для доступа к сервису, не требующему авторизации, создайте экземпляр клиентского объекта сервиса, передав в качестве параметра либо объект Context , либо объект Activity . При необходимости пользователям будет предложено обновить сервисы Google Play перед выполнением каких-либо вызовов API.

Следующий фрагмент кода показывает, как получить последнее известное местоположение устройства с помощью поставщика объединенных данных о местоположении (Fused Location Provider):

Котлин

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

Для доступа к API, требующим авторизации пользователя, следуйте руководству по авторизации доступа к данным пользователей Google . Если вы используете API, требующий объект GoogleSignInAccount , используйте метод AuthorizationResult#toGoogleSignInAccount() .

Проверьте доступность API.

Прежде чем включать функцию, зависящую от API сервисов Google Play, проверьте, доступен ли этот API на устройстве, вызвав метод checkApiAvailability() .

Следующий фрагмент кода показывает, как проверить доступность объединенного поставщика местоположения:

Котлин

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