Hinweis zur Telefonnummer

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

Der Telefonnummernhinweis bietet unter anderem folgende Vorteile:

  • Es sind keine zusätzlichen Berechtigungsanfragen erforderlich.
  • Nutzer müssen die Telefonnummer nicht mehr manuell eingeben
  • Es wird kein Google-Konto benötigt
  • Nicht direkt an Anmelde-/Anmelde-Workflows gebunden
  • Bessere Unterstützung für Android-Versionen im Vergleich zu Autofill

Hinweis

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

Eigene App konfigurieren

Fügen Sie die Abhängigkeit der Google Play-Dienste für die Phone Number Hint API in die Gradle-Build-Datei Ihres Moduls ein. Diese lautet normalerweise app/build.gradle:

  apply plugin: 'com.android.application'

  ...

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

Funktionsweise

Die Phone Number Hint API verwendet einen PendingIntent, um den Vorgang zu starten. Sobald PendingIntent gestartet wurde, wird dem Nutzer eine UI angezeigt, auf der alle (SIM-basierten) Telefonnummern aufgeführt sind. Der Nutzer kann dann eine Telefonnummer auswählen, die er verwenden möchte, oder den Vorgang abbrechen. Die ausgewählte Telefonnummer wird dann dem Entwickler zur Verfügung gestellt, um sie aus der Intent abzurufen.

Benutzeroberfläche und Einstellungen für Hinweis zu Telefonnummern
Abbildung 1. UI und Einstellungen für Hinweis zu Telefonnummern

GetPhoneNumbeHintIntentRequest-Objekt erstellen

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

Kotlin

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

Java

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

Hinweis zur Anforderung einer Telefonnummer

Rufen Sie SignInClient.getPhoneNumberHintIntent() auf und übergeben Sie das vorherige GetPhoneNumberHintIntentRequest-Objekt, um die PendingIntent abzurufen und den Vorgang für den 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 wird abgerufen

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