如要在 Android 應用程式中存取 Google Play 服務支援的 API,您必須使用 API 用戶端物件。這些物件會處理與 Google Play 服務的連線,並在連線可用時將要求排入佇列,然後依序執行。您可以視需要建立新的 API 用戶端,因為這類用戶端的建構成本較低。
開始使用
開始之前,請務必在應用程式專案中設定 Google Play 服務。
如要存取不需要授權的服務,請建立服務用戶端物件的例項,並傳遞 Context
或 Activity
物件。如有需要,系統會在執行任何 API 呼叫前,提示使用者升級 Google Play 服務。
下列程式碼片段顯示如何使用 Fused Location Provider 取得裝置的最後已知位置:
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.")); }