เข้าถึง 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."));
}