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