قائمة بأرقام الهواتف

توفّر واجهة 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:20.7.0'
  }

آلية العمل

تستخدم واجهة برمجة التطبيقات Phone Number Hint API PendingIntent لبدء المسار. بعد إطلاق برنامج PENDINGIntent، ستظهر للمستخدم واجهة مستخدم تسرد جميع أرقام الهواتف (المستندة إلى شريحة SIM) وبذلك يمكن للمستخدم اختيار رقم هاتف يريد استخدامه أو إلغاء العملية. بعد ذلك، سيتم توفير رقم الهاتف المحدد لمطوّر البرامج لاسترداده من Intent.

واجهة مستخدم "إضافة رقم الهاتف" وإعداداته
الشكل 1. واجهة مستخدم "إعدادات رقم الهاتف" وإعداداته

إنشاء كائن 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

ActivityResultLauncher phoneNumberHintIntentResultLauncher = ...

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

ActivityResultLauncher phoneNumberHintIntentResultLauncher =
  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);
              }
          }
  });