Для доступа к API сервисов Google Play в вашем приложении Android необходимо использовать объекты API-клиентов. Эти объекты управляют подключением к сервисам Google Play, ставят запросы в очередь и выполняют их по мере доступности соединения. Вы можете создавать новые API-клиенты по мере необходимости, поскольку их разработка не требует больших затрат.
Начать
Прежде чем начать, обязательно настройте сервисы Google Play в своем проекте приложения.
Чтобы получить доступ к сервису, не требующему авторизации, создайте экземпляр объекта клиента сервиса, передав ему объект Context
или Activity
. При необходимости пользователям будет предложено обновить сервисы Google Play перед выполнением любых вызовов API.
В следующем фрагменте кода показано, как получить последнее известное местоположение устройства с помощью поставщика комбинированных местоположений:
Котлин
// 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. } }
Ява
// 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.")} }
Ява
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.")); }