Để truy cập vào các API do Dịch vụ Google Play cung cấp trong ứng dụng Android, bạn cần sử dụng các đối tượng ứng dụng API. Các đối tượng này xử lý kết nối với Dịch vụ Google Play, xếp hàng các yêu cầu và thực thi chúng theo thứ tự khi có kết nối. Bạn có thể tạo các ứng dụng API mới khi cần vì chúng không tốn kém khi tạo.
Bắt đầu
Trước khi bắt đầu, hãy nhớ thiết lập Dịch vụ Google Play trong dự án ứng dụng của bạn.
Để truy cập vào một dịch vụ không yêu cầu uỷ quyền, hãy tạo một phiên bản của đối tượng ứng dụng của dịch vụ đó, truyền một đối tượng Context
hoặc một đối tượng Activity
. Nếu cần, người dùng sẽ được nhắc nâng cấp Dịch vụ Google Play trước khi thực hiện bất kỳ lệnh gọi API nào.
Đoạn mã sau đây cho biết cách lấy thông tin vị trí xác định gần đây nhất của thiết bị bằng Trình cung cấp vị trí kết hợp:
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. } });
Để truy cập vào các API yêu cầu người dùng uỷ quyền, hãy làm theo hướng dẫn để uỷ quyền truy cập vào dữ liệu người dùng trên Google.
Nếu bạn đang sử dụng một API yêu cầu đối tượng GoogleSignInAccount
, hãy sử dụng phương thức AuthorizationResult#toGoogleSignInAccount()
.
Kiểm tra xem API có hoạt động hay không
Trước khi bật một tính năng phụ thuộc vào API Dịch vụ Google Play, hãy kiểm tra xem API có trên thiết bị hay không bằng cách gọi checkApiAvailability()
.
Đoạn mã sau đây cho biết cách kiểm tra xem trình cung cấp vị trí kết hợp có hoạt động hay không:
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.")); }