เข้าถึง Google APIs

หากต้องการเข้าถึง API ที่ขับเคลื่อนโดยบริการ Google Play ในแอป Android คุณต้องใช้ออบเจ็กต์ไคลเอ็นต์ API ออบเจ็กต์เหล่านี้จัดการ การเชื่อมต่อกับบริการ Google Play, จัดคิวคำขอ และดำเนินการตามลำดับ เมื่อมีการเชื่อมต่อ คุณสร้างไคลเอ็นต์ API ใหม่ได้ตามต้องการ เนื่องจากสร้างได้โดยไม่เสียค่าใช้จ่าย

เริ่มต้นใช้งาน

ก่อนเริ่มต้น ให้ตรวจสอบว่าได้ตั้งค่าบริการ Google Play ในโปรเจ็กต์แอปแล้ว

หากต้องการเข้าถึงบริการที่ไม่ต้องมีการให้สิทธิ์ ให้สร้างอินสแตนซ์ของออบเจ็กต์ไคลเอ็นต์ของบริการ โดยส่งผ่านContext หรือออบเจ็กต์ Activity หากจำเป็น ระบบจะแจ้งให้ผู้ใช้อัปเกรดบริการ 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 services API ให้ตรวจสอบว่า 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."));
}