الوصول إلى Google APIs

للوصول إلى واجهات برمجة التطبيقات المستندة إلى "خدمات Google Play" في تطبيق Android، عليك استخدام عناصر عملاء واجهات برمجة التطبيقات. تتعامل هذه العناصر مع الاتصال بخدمات Google Play، وإضافة الطلبات إلى "قائمة الانتظار" وتنفيذها في الترتيب الصحيح عند توفّر اتصال. يمكنك إنشاء عملاء جدد لواجهات برمجة التطبيقات حسب الحاجة، لأنّه من غير المكلف إنشاءهم.

البدء

قبل البدء، احرص على إعداد "خدمات Google Play" في مشروع تطبيقك.

للوصول إلى خدمة لا تتطلّب إذنًا، أنشئ مثيلًا لعنصر عميل الخدمة، مع تمرير عنصر Context أو Activity. إذا لزم الأمر، سيُطلَب من المستخدمين ترقية "خدمات Google Play" قبل تنفيذ أي طلبات من واجهة برمجة التطبيقات.

يوضّح مقتطف الرمز التالي كيفية الحصول على آخر موقع جغرافي معروف للجهاز باستخدام 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.
            }
        });

للوصول إلى واجهات برمجة التطبيقات التي تتطلّب تفويض المستخدم، اتّبِع الدليل المخصص ل تفويض الوصول إلى بيانات مستخدمي Google. إذا كنت تستخدم واجهة برمجة تطبيقات تتطلّب عنصر GoogleSignInAccount، استخدِم الأسلوب AuthorizationResult#toGoogleSignInAccount().

التحقّق من توفّر واجهة برمجة التطبيقات

قبل تفعيل ميزة تعتمد على واجهة برمجة تطبيقات "خدمات Google Play"، تحقَّق مما إذا كانت واجهة برمجة التطبيقات متاحة على الجهاز من خلال الاتصال بـ 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."));
}