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

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

تشمل مزايا استخدام واجهة برمجة التطبيقات Phone Number Hint ما يلي:

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

آلية العمل

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

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

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

إعداد تطبيقك

أضِف اعتمادية خدمات Google Play لواجهة برمجة التطبيقات Phone Number Hint إلى ملف Gradle الخاص بالوحدة، والذي يكون عادةً app/build.gradle:

  apply plugin: 'com.android.application'

  ...

  dependencies {
    implementation 'com.google.android.gms:play-services-auth:21.5.1'
  }

إنشاء كائن GetPhoneNumbeHintIntentRequest

ابدأ بإنشاء كائن GetPhoneNumberHintIntentRequest باستخدام الطريقة المقدَّمة GetPhoneNumberHintIntentRequest.Builder(). يمكن بعد ذلك استخدام كائن الطلب هذا للحصول على Intent لبدء سير عمل Phone Number Hint.

Kotlin

val request: GetPhoneNumberHintIntentRequest = GetPhoneNumberHintIntentRequest.builder().build()

Java

GetPhoneNumberHintIntentRequest request = GetPhoneNumberHintIntentRequest.builder().build();

طلب Phone Number Hint

استدعِ SignInClient.getPhoneNumberHintIntent(), مع تمرير كائن GetPhoneNumberHintIntentRequest السابق، لاسترداد PendingIntent لبدء سير عمل Phone Number Hint.

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