راهنمایی شماره تلفن

Phone Number Hint API، کتابخانه‌ای که توسط سرویس‌های Google Play پشتیبانی می‌شود، روشی بدون اصطکاک برای نمایش شماره‌های تلفن کاربر (مبتنی بر سیم‌کارت) به‌عنوان یک راهنمایی ارائه می‌کند.

مزایای استفاده از شماره تلفن شامل موارد زیر است:

  • هیچ درخواست مجوز اضافی مورد نیاز نیست
  • کاربر را از تایپ دستی شماره تلفن بی نیاز می کند
  • هیچ حساب Google مورد نیاز نیست
  • مستقیماً به گردش‌های کاری ثبت نام/آپ نمی‌شود
  • پشتیبانی گسترده تر از نسخه های اندروید در مقایسه با تکمیل خودکار

قبل از شروع

برای آماده سازی اپلیکیشن خود، مراحل زیر را انجام دهید.

برنامه خود را پیکربندی کنید

وابستگی خدمات 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 راه اندازی شد، یک رابط کاربری به کاربر ارائه می شود که همه شماره های تلفن (مبتنی بر سیم کارت) را فهرست می کند. سپس کاربر می تواند شماره تلفنی را که می خواهد استفاده کند انتخاب کند یا جریان را لغو کند. سپس شماره تلفن انتخاب شده برای بازیابی از Intent در اختیار برنامه‌نویس قرار می‌گیرد.

شماره تلفن اشاره رابط کاربری و تنظیمات.
شکل 1. شماره تلفن راهنمایی و تنظیمات

یک شی GetPhoneNumbeHintIntentRequest ایجاد کنید

با ایجاد یک شی GetPhoneNumberHintIntentRequest با استفاده از متد GetPhoneNumberHintIntentRequest.Builder() شروع کنید. سپس می توان از این شی درخواست برای دریافت Intent برای شروع جریان شماره تلفن استفاده کرد.

val request: GetPhoneNumberHintIntentRequest = GetPhoneNumberHintIntentRequest.builder().build()
GetPhoneNumberHintIntentRequest request = GetPhoneNumberHintIntentRequest.builder().build();

راهنمایی درخواست شماره تلفن

SignInClient.getPhoneNumberHintIntent() را فراخوانی کنید، که در شیء GetPhoneNumberHintIntentRequest قبلی ارسال می شود، تا PendingIntent برای شروع جریان Hint شماره تلفن بازیابی کنید.

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")
}
ActivityResultLauncher

بازیابی شماره تلفن

برای بازیابی شماره تلفن، 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")
     
}
 
}
ActivityResultLauncher