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

واجهة 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);
              }
          }
  });