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.3.0'
}
آلية العمل
تستخدِم Phone Number Hint API PendingIntent
لبدء العملية. بعد تشغيل PendingIntent، سيتم عرض واجهة مستخدم أمام العميل تعرِض جميع أرقام الهواتف (المستندة إلى شريحة SIM). يمكن للمستخدم
بعد ذلك اختيار رقم هاتف يريد استخدامه أو إلغاء العملية.
بعد ذلك، سيتم إتاحة رقم الهاتف المحدّد للمطوّر كي يتمهّل في retrieving من Intent
.

أنشئ عنصر GetPhoneNumbeHintIntentRequest.
ابدأ بإنشاء عنصر GetPhoneNumberHintIntentRequest
باستخدام المحاولة
GetPhoneNumberHintIntentRequest.Builder()
المقدَّمة. ويمكن بعد ذلك استخدام كائن الطلب هذا للحصول على Intent
لبدء مسار
لمحة عن رقم الهاتف.
val request: GetPhoneNumberHintIntentRequest = GetPhoneNumberHintIntentRequest.builder().build()
GetPhoneNumberHintIntentRequest request = GetPhoneNumberHintIntentRequest.builder().build();
طلب تلميح رقم الهاتف
اتصل بـ SignInClient.getPhoneNumberHintIntent()
،
مع إدخال عنصر GetPhoneNumberHintIntentRequest
السابق،
لاسترداد PendingIntent
لبدء عملية "تلميح رقم الهاتف".
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") }
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
لاسترداد رقم الهاتف.
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") } }
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); } } });