توفّر واجهة 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
.

إنشاء كائن 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
ActivityResultLauncherphoneNumberHintIntentResultLauncher = ... 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
ActivityResultLauncherphoneNumberHintIntentResultLauncher = 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); } } });