Hinweis zur Telefonnummer

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

Die Verwendung von „Hinweis zur Telefonnummer“ bietet folgende Vorteile:

  • Es sind keine zusätzlichen Berechtigungsanfragen erforderlich.
  • Der Nutzer muss die Telefonnummer nicht mehr manuell eingeben.
  • Kein Google-Konto erforderlich
  • Nicht direkt mit Anmelde-/Registrierungsabläufen verknüpft
  • 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 von Google Play-Diensten für die Phone Number Hint API der Gradle-Builddatei Ihres Moduls hinzu, die in der Regel app/build.gradle lautet:

  apply plugin: 'com.android.application'

  ...

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

Funktionsweise

Die Phone Number Hint API verwendet einen PendingIntent, um den Ablauf zu starten. Sobald der PendingIntent gestartet wurde, wird dem Nutzer eine Benutzeroberfläche mit allen (SIM-basierten) Telefonnummern angezeigt. 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, damit er sie aus der Intent abrufen kann.

Benutzeroberfläche und Einstellungen für Telefonnummernhinweise
Abbildung 1. Benutzeroberfläche und Einstellungen für Telefonnummernhinweise

GetPhoneNumbeHintIntentRequest-Objekt erstellen

Erstellen Sie zuerst ein GetPhoneNumberHintIntentRequest-Objekt mit der bereitgestellten Methode GetPhoneNumberHintIntentRequest.Builder(). Dieses Anfrageobjekt kann dann verwendet werden, um eine Intent abzurufen, um den Ablauf für den Hinweis zur Telefonnummer zu starten.

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

Hinweis zum Anfordern einer Telefonnummer

Rufe SignInClient.getPhoneNumberHintIntent() auf und gib das vorherige GetPhoneNumberHintIntentRequest-Objekt an, um die PendingIntent abzurufen und den Ablauf für den Hinweis zur Telefonnummer zu starten.

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

Telefonnummer abrufen

Gib Intent bis SignInClient.getPhoneNumberFromIntent ein, um die Telefonnummer abzurufen.

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