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

تقدّم Phone Number Hint API، وهي مكتبة مستندة إلى خدمات Google Play، طريقة سهلة لعرض أرقام هواتف المستخدم (المستندة إلى شريحة SIM) كأحد التلميحات.

تشمل مزايا استخدام ميزة "لمحة عن رقم الهاتف" ما يلي:

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

آلية العمل

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

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

لإعداد تطبيقك، أكمِل الخطوات الواردة في الأقسام التالية.

ضبط إعدادات تطبيقك

أضِف الاعتمادية على خدمات 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.3.0'
  }

أنشئ عنصر 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);
              }
          }
  });