存取 Google API

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

開始使用

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

如要存取不需要授權的服務,請建立服務用戶端物件的執行個體,並傳遞 ContextActivity 物件。如有需要,系統會提示使用者升級 Google Play 服務,再執行任何 API 呼叫。

下列程式碼片段顯示如何使用 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."));
}