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

«میانای برنامه‌سازی کاربردی اشاره شماره تلفن»، کتابخانه‌ای که از خدمات Google Play نیرو می‌گیرد، روشی آسان برای نمایش شماره تلفن‌های کاربر (مبتنی بر سیم‌کارت) به‌عنوان اشاره ارائه می‌دهد.

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

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

روش کار

‫Phone Number Hint API از PendingIntent برای شروع جریان استفاده می‌کند. پس‌از راه‌اندازی PendingIntent، میانای کاربری به کاربر ارائه می‌شود که همه شماره‌های تلفن (سیم‌کارت‌محور) را فهرست می‌کند. سپس کاربر می‌تواند شماره تلفنی را که می‌خواهد استفاده کند انتخاب کند یا جریان را لغو کند. شماره تلفن انتخاب‌شده دراختیار توسعه‌دهنده قرار می‌گیرد تا آن را از Intent بازیابی کند.

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

برای آماده کردن برنامه‌تان، مراحل بخش‌های زیر را تکمیل کنید.

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

وابستگی خدمات Google Play را برای «میانای برنامه‌سازی کاربردی اشاره شماره تلفن» به فایل ساخت 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 به‌منظور شروع جریان «راهنمایی شماره تلفن» استفاده کرد.

کاتلین

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

جاوا

ActivityResultLauncher phoneNumberHintIntentResultLauncher = ...

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

جاوا

ActivityResultLauncher phoneNumberHintIntentResultLauncher =
  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);
              }
          }
  });