توفر واجهة برمجة التطبيقات Phone Number Hint، وهي مكتبة تستند إلى خدمات Google Play، طريقة سلسة لعرض أرقام هواتف المستخدمين (المستندة إلى شريحة SIM) كـ تلميح.
تشمل مزايا استخدام واجهة برمجة التطبيقات Phone Number Hint ما يلي:
- لا يلزم طلب أي أذونات إضافية
- لا يحتاج المستخدم إلى كتابة رقم الهاتف يدويًا
- لا يلزم توفّر حساب على Google
- لا ترتبط واجهة برمجة التطبيقات بشكل مباشر بسير عمل تسجيل الدخول أو الاشتراك
- تتوافق واجهة برمجة التطبيقات مع نطاق أوسع من إصدارات Android مقارنةً بميزة "الملء التلقائي"
آلية العمل
تستخدم واجهة برمجة التطبيقات Phone Number Hint عنصر PendingIntent
لبدء سير العمل. بعد تشغيل `PendingIntent`، سيظهر للمستخدم واجهة مستخدم تعرض جميع أرقام الهواتف (المستندة إلى شريحة SIM). يمكن للمستخدم بعد ذلك اختيار رقم هاتف يريد استخدامه أو إلغاء سير العمل.
سيصبح رقم الهاتف الذي تم اختياره متاحًا للمطوّر لاسترداده من Intent.
لإعداد تطبيقك، أكمل الخطوات الواردة في الأقسام التالية.
إعداد تطبيقك
أضِف اعتمادية خدمات 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
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); } } });