واجهة Phone Number Hint API، وهي مكتبة توفِّرها خدمات Google Play طريقة سهلة لعرض أرقام هواتف المستخدمين (المستندة إلى شريحة SIM) كتلميح.
تشمل مزايا استخدام "تلميح رقم الهاتف" ما يلي:
- لا نحتاج إلى طلبات إضافية للحصول على أذونات
- لن يحتاج المستخدم إلى كتابة رقم الهاتف يدويًا
- لا حاجة إلى حساب Google
- غير مرتبطة مباشرةً بسير عمل تسجيل الدخول أو الاشتراك
- يتوافق مع إصدارات Android على نطاق أوسع مقارنةً بـ "الملء التلقائي"
قبل البدء
لإعداد تطبيقك، أكمِل الخطوات الواردة في الأقسام التالية.
إعداد تطبيقك
إضافة خدمات Google Play
تبعية واجهة برمجة التطبيقات Phone Number Hint API إلى
ملف إصدار Gradle للوحدة،
الذي يكون عادةً app/build.gradle
:
apply plugin: 'com.android.application'
...
dependencies {
implementation 'com.google.android.gms:play-services-auth:21.2.0'
}
آلية العمل
تستخدم واجهة برمجة التطبيقات Phone Number Hint API PendingIntent
لبدء التدفق. بمجرد إطلاق كائن PendingIntent، سيتم
واجهة مستخدم تعرض جميع أرقام الهواتف (المستندة إلى شريحة SIM). يمكن للمستخدم
ثم اختيار رقم الهاتف الذي يريدون استخدامه أو إلغاء العملية.
سيتم بعد ذلك إتاحة رقم الهاتف المحدَّد للمطوّر من أجل
استرداد البيانات من Intent
.
إنشاء كائن GetPhoneNumbeHintIntentRequest
ابدأ بإنشاء عنصر GetPhoneNumberHintIntentRequest
باستخدام
تم تقديمه في GetPhoneNumberHintIntentRequest.Builder()
. يمكن بعد ذلك استخدام كائن الطلب هذا للحصول على Intent
لبدء
مسار تلميح رقم الهاتف
Kotlin
val request: GetPhoneNumberHintIntentRequest = GetPhoneNumberHintIntentRequest.builder().build()
لغة Java
GetPhoneNumberHintIntentRequest request = GetPhoneNumberHintIntentRequest.builder().build();
تلميح بشأن طلب رقم الهاتف
يمكنك الاتصال على الرقم SignInClient.getPhoneNumberHintIntent()
،
تمرير كائن GetPhoneNumberHintIntentRequest
السابق،
لاسترداد PendingIntent
لبدء مسار "تلميح رقم الهاتف".
Kotlin
val phoneNumberHintIntentResultLauncher = ... Identity.getSignInClient(activity) .getPhoneNumberHintIntent(request) .addOnSuccessListener { result: PendingIntent -> try { phoneNumberHintIntentResultLauncher.launch( IntentSenderRequest.Builder(result).build() ) } catch (e: Exception) { Log.e(TAG, "Launching the PendingIntent failed") } } .addOnFailureListener { Log.e(TAG, "Phone Number Hint failed") }
لغة Java
ActivityResultLauncherphoneNumberHintIntentResultLauncher = ... Identity.getSignInClient(activity) .getPhoneNumberHintIntent(request) .addOnSuccessListener( result -> { try { phoneNumberHintIntentResultLauncher.launch(result.getIntentSender()); } catch(Exception e) { Log.e(TAG, "Launching the PendingIntent failed", e); } }) .addOnFailureListener(e -> { Log.e(TAG, "Phone Number Hint failed", e); });
استرداد رقم الهاتف
المرور في Intent
إلى SignInClient.getPhoneNumberFromIntent
لاستعادة رقم الهاتف.
Kotlin
val phoneNumberHintIntentResultLauncher = registerForActivityResult(ActivityResultContracts.StartIntentSenderForResult()) { result -> try { val phoneNumber = Identity.getSignInClient(activity).getPhoneNumberFromIntent(result.data) } catch(e: Exception) { Log.e(TAG, "Phone Number Hint failed") } }
لغة Java
ActivityResultLauncherphoneNumberHintIntentResultLauncher = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback () { @Override public void onActivityResult(ActivityResult result) { try { String phoneNumber = Identity.getSignInClient(activity).getPhoneNumberFromIntent(result.getData()); } catch { Log.e(TAG, "Phone Number Hint failed", e); } } });