توفّر واجهة برمجة التطبيقات Phone Number Hint API، وهي مكتبة مستندة إلى خدمات Google Play، طريقة سلسة لعرض أرقام هواتف المستخدم (المستندة إلى شريحة SIM) كتلميح.
تشمل مزايا استخدام واجهة برمجة التطبيقات Phone Number Hint ما يلي:
- لا حاجة إلى طلبات إضافية للحصول على إذن
- يغني المستخدم عن كتابة رقم الهاتف يدويًا
- لا حاجة إلى حساب Google
- غير مرتبطة مباشرةً بمهام سير العمل الخاصة بتسجيل الدخول أو الاشتراك
- دعم أوسع لإصدارات Android مقارنةً بميزة "الملء التلقائي"
آلية العمل
تستخدم واجهة برمجة التطبيقات Phone Number Hint API رمز PendingIntent
لبدء العملية. بعد تشغيل PendingIntent، ستظهر للمستخدم واجهة مستخدم تعرض جميع أرقام الهواتف (المستندة إلى شريحة SIM). ويمكن للمستخدم بعد ذلك اختيار رقم هاتف يريد استخدامه أو إلغاء العملية.
سيصبح رقم الهاتف المحدّد متاحًا للمطوّر لاسترداده من Intent.
لإعداد تطبيقك، أكمِل الخطوات الواردة في الأقسام التالية.
إعداد تطبيقك
أضِف اعتماديات خدمات Google Play
لواجهة Phone Number Hint API إلى
ملف Gradle الخاص بالوحدة،
والذي يكون عادةً app/build.gradle:
apply plugin: 'com.android.application'
...
dependencies {
implementation 'com.google.android.gms:play-services-auth:22.0.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
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); } } });