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