Hinweis zur Telefonnummer

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Die Phone Hint API, eine Bibliothek mit Google Play-Diensten, bietet eine reibungslose Möglichkeit, die (SIM-basierten) Telefonnummern eines Nutzers als Hinweis anzuzeigen.

Der Telefonnummern-Hinweis bietet folgende Vorteile:

  • Es sind keine zusätzlichen Berechtigungsanfragen erforderlich
  • Der Nutzer muss die Telefonnummer dann nicht mehr manuell eingeben.
  • Kein Google-Konto erforderlich
  • Nicht direkt an Anmelde-/Anmeldeworkflows gebunden
  • Größere Unterstützung für Android-Versionen im Vergleich zur Funktion „Automatisches Ausfüllen“

Hinweis

Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre App vorzubereiten.

Eigene App konfigurieren

Fügen Sie die Google Play-Dienste-Abhängigkeit für die Phone Hint API der Gradle-Build-Datei Ihres Moduls hinzu, die üblicherweise app/build.gradle ist:

  apply plugin: 'com.android.application'

  ...

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

Funktionsweise

Die Number Hint API verwendet einen PendingIntent, um den Vorgang zu starten. Nach dem Start des PendingIntent-Objekts wird dem Nutzer eine UI mit allen (SIM-basierten) Telefonnummern angezeigt. Der Nutzer kann dann eine Telefonnummer auswählen oder den Vorgang abbrechen. Die ausgewählte Telefonnummer wird dem Entwickler zur Verfügung gestellt, damit er sie aus der Intent abrufen kann.

Telefonnummer-Hinweiseinstellungen und -einstellungen.
Abbildung 1. Benutzeroberfläche und Einstellungen für Hinweise auf Telefonnummern

GetPhoneNumbeHintIntentRequest-Objekt erstellen

Erstellen Sie zuerst ein GetPhoneNumberHintIntentRequest-Objekt mit der bereitgestellten GetPhoneNumberHintIntentRequest.Builder()-Methode. Mit diesem Anfrageobjekt kann dann ein Intent abgerufen werden, um den Hinweisvorgang für die Telefonnummer zu starten.

Kotlin

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

Java

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

Hinweis auf Telefonnummer wird angefordert

Rufen Sie SignInClient.getPhoneNumberHintIntent() auf und übergeben Sie das vorherige GetPhoneNumberHintIntentRequest-Objekt, um die PendingIntent abzurufen, um den Hinweis zum Telefonnummernhinweis zu starten.

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

Telefonnummer abrufen

Übergeben Sie Intent an SignInClient.getPhoneNumberFromIntent, um die Telefonnummer abzurufen.

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