存取 Google API

如要在 Android 應用程式中存取由 Google Play 服務支援的 API,您需要使用 API 用戶端物件。這些物件會處理與 Google Play 服務的連線、將要求加入佇列,並在連線可用時依序執行要求。您可以視需要建立新的 API 用戶端,因為建構成本不高。

開始使用

開始之前,請務必在應用程式專案中設定 Google Play 服務

如要存取不需要授權的服務,請建立服務用戶端物件的執行個體,並傳遞 ContextActivity 物件。如有需要,系統會提示使用者升級 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 是否可用

啟用依附於 Google Play 服務 API 的功能前,請先呼叫 checkApiAvailability(),確認裝置是否支援該 API。

下列程式碼片段說明如何檢查融合位置資訊供應器是否可用:

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