تلميح بشأن رقم الهاتف

توفِّر واجهة برمجة تطبيقات 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.

واجهة مستخدم "تلميح رقم الهاتف" والإعدادات
الشكل 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);
              }
          }
  });