الوصول إلى Google APIs

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

البدء

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

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

يوضّح مقتطف الرمز التالي كيفية الحصول على آخر موقع جغرافي معروف للجهاز باستخدام موفِّر الموقع المدمج:

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.
    }
}

جافا

// 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() method.

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

قبل تفعيل ميزة تعتمد على واجهة برمجة تطبيقات "خدمات 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.")}
}

جافا

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."));
}