توفِّر واجهة برمجة تطبيقات 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
.
إنشاء كائن 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); } } });