רמז למספר טלפון

Phone Number Hint API, ספרייה שמופעלת על ידי Google Play Services, מספקת דרך חלקה להציג את מספרי הטלפון של המשתמשים (מבוססי ה-SIM) כרמז.

היתרונות של 'רמז למספר טלפון' כוללים את אלה:

  • אין צורך בבקשות הרשאה נוספות
  • לא צריך להקליד את מספר הטלפון באופן ידני
  • לא נדרש חשבון Google
  • אין קשר ישיר לתהליכי כניסה או הרשמה
  • תמיכה רחבה יותר בגרסאות Android בהשוואה למילוי האוטומטי

לפני שמתחילים

כדי להכין את האפליקציה שלך, בצע את השלבים המפורטים בקטעים הבאים.

הגדרת האפליקציה

מוסיפים את התלות של Google Play Services של Phone Number Hint API לקובץ ה-build של Gradle של המודול, שלרוב הוא app/build.gradle:

  apply plugin: 'com.android.application'

  ...

  dependencies {
    implementation 'com.google.android.gms:play-services-auth:20.7.0'
  }

איך זה עובד

ה-Phone Number Hint API משתמש ב-PendingIntent כדי להתחיל את התהליך. אחרי ההפעלה של PendingIntent, למשתמש יוצג ממשק משתמש שבו יפורטו כל מספרי הטלפון (מבוססי ה-SIM). המשתמשים יוכלו לבחור אם להשתמש במספר טלפון שהם רוצים להשתמש בו, או לבטל את התהליך. מספר הטלפון שנבחר יהיה זמין למפתח לאחזור מ-Intent.

ממשק משתמש והגדרות לרמז למספר טלפון.
איור 1. ממשק משתמש והגדרות לרמז מספרי טלפון

יצירת אובייקט GetPhoneNumbeHintIntentRequest

בשלב הראשון יוצרים אובייקט GetPhoneNumberHintIntentRequest באמצעות method מסוג GetPhoneNumberHintIntentRequest.Builder(). לאחר מכן אפשר להשתמש באובייקט הבקשה הזה כדי לקבל Intent בתור התחלה של 'רמז למספר טלפון'.

Kotlin

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

Java

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

בקשת רמז למספר טלפון

צריך להפעיל את 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

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 כדי לאחזר את מספר הטלפון.

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

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