Hinweis zur Telefonnummer

Die Phone Number Hint API, eine von Google Play-Diensten bereitgestellte Bibliothek, bietet eine nahtlose Möglichkeit, die SIM-basierten Telefonnummern eines Nutzers als Hinweis anzuzeigen.

Die Verwendung des Telefonnummern-Hinweises bietet folgende Vorteile:

  • Es sind keine weiteren Berechtigungsanfragen erforderlich
  • Der Nutzer muss die Telefonnummer nicht mehr manuell eingeben.
  • Ein Google-Konto ist nicht erforderlich.
  • Nicht direkt mit Anmelde-/Anmeldeworkflows verknüpft
  • 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üge in der Datei build.gradle auf Projektebene das Google-Repository Maven sowohl im buildscript- als auch im allprojects-Abschnitt ein:

buildscript {
  repositories {
    google()
    mavenCentral()
  }
}

allprojects {
  repositories {
    google()
    mavenCentral()
  }
}

Füge die Google Play-Dienste-Abhängigkeit für die Phone Hint API in deine Modul-Gradle-Build-Datei ein. Diese ist häufig app/build.gradle:

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

Funktionsweise

Die Phone Hinweis API verwendet einen PendingIntent, um den Vorgang zu starten. Nach dem Start des PendingIntent wird dem Nutzer eine UI angezeigt, in der alle (SIM-basierten) Telefonnummern aufgeführt sind. Der Nutzer kann dann eine Telefonnummer auswählen oder den Vorgang abbrechen. Die ausgewählte Telefonnummer steht dem Entwickler dann zur Verfügung und kann über Intent abgerufen werden.

Benutzeroberfläche und Einstellungen für Telefonnummern.
Abbildung 1. UI und Einstellungen für Hinweise auf Telefonnummern

GetPhoneNumbeHintIntentRequest-Objekt erstellen

Erstelle zuerst ein GetPhoneNumberHintIntentRequest-Objekt mit der bereitgestellten GetPhoneNumberHintIntentRequest.Builder()-Methode. Dieses Anfrageobjekt kann dann verwendet werden, um einen Intent abzurufen und so den Hinweise für die Telefonnummer zu starten.

Kotlin

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

Java

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

Hinweis zum Anfordern der Telefonnummer

Rufe SignInClient.getPhoneNumberHintIntent() auf und übergeben Sie das vorherige GetPhoneNumberHintIntentRequest-Objekt, um das PendingIntent abzurufen, um den Ablauf des Telefonnummern-Hinweiss zu starten.

Kotlin

val phoneNumberHintIntentResultLauncher: ActivityResultLauncher = ...

Identity.signInClient(activity)
  .getPhoneNumberHintIntent(request)
  .addOnSuccessListener(
      try {
          phoneNumberHintIntentResultLauncher.launch(request.getIntentSender())
      } 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

Übergib die Werte Intent an SignInClient.getPhoneNumberFromIntent, um die Telefonnummer abzurufen.

Kotlin

val phoneNumberHintIntentResultLauncher: ActivityResultLauncher =
  registerForActivityResult(StartActivityForResult()) { result ->
      try {
          val phoneNumber = Identity.signInClient(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);
              }
          }
  });