برای دسترسی به API های ارائه شده توسط سرویسهای گوگل پلی در برنامه اندروید خود، باید از اشیاء کلاینت API استفاده کنید. این اشیاء اتصال به سرویسهای گوگل پلی را مدیریت میکنند، درخواستها را در صف قرار میدهند و در صورت وجود اتصال، آنها را به ترتیب اجرا میکنند. میتوانید در صورت نیاز کلاینتهای API جدید ایجاد کنید، زیرا ساخت آنها ارزان است.
شروع کنید
Before you begin, make sure to set up Google Play services in your app project.
برای دسترسی به سرویسی که نیازی به مجوز ندارد، یک نمونه از شیء کلاینت سرویس ایجاد کنید و یک شیء Context یا Activity به آن ارسال کنید. در صورت لزوم، قبل از اجرای هرگونه فراخوانی API، از کاربران خواسته میشود که سرویسهای Google Play را ارتقا دهند.
The following code snippet shows how to get the device's last known location using the Fused Location Provider:
کاتلین
// 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. } }
جاوا
// 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هایی که نیاز به مجوز کاربر دارند، راهنمای مجوز دسترسی به دادههای کاربر گوگل را دنبال کنید. اگر از APIای استفاده میکنید که به شیء GoogleSignInAccount نیاز دارد، از متد AuthorizationResult#toGoogleSignInAccount() استفاده کنید.
بررسی در دسترس بودن API
Before enabling a feature that depends on a Google Play services API, check if the API is available on the device by calling checkApiAvailability() .
The following code snippet shows how to check if the fused location provider is available:
کاتلین
fun getLastLocationIfApiAvailable(context: Context?): Task<Location>? { val client = getFusedLocationProviderClient(context) return GoogleApiAvailability.getInstance() .checkApiAvailability(client) .onSuccessTask { _ -> client.lastLocation } .addOnFailureListener { _ -> Log.d(TAG, "Location unavailable.")} }
جاوا
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.")); }