如要在 Android 應用程式中存取由 Google Play 服務支援的 API,您需要使用 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 是否可用
啟用依附於 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.")); }