Die Phone Number Hint API, eine von Google Play-Diensten unterstützte Bibliothek, bietet eine einfache Möglichkeit, die (SIM-basierten) Telefonnummern eines Nutzers als Hinweis anzuzeigen.
Die Verwendung des Telefonnummernhinweiss bietet folgende Vorteile:
- Es sind keine zusätzlichen Berechtigungsanfragen erforderlich
- Nutzer müssen die Telefonnummer nicht manuell eingeben.
- Es ist kein Google-Konto erforderlich
- Nicht direkt mit Anmelde-/Anmeldeabläufen verknüpft
- Mehr 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 der Gradle-Build-Datei des Moduls die Abhängigkeit der Google Play-Dienste für die Phone Number Hint API hinzu. Diese ist in der Regel app/build.gradle
:
apply plugin: 'com.android.application'
...
dependencies {
implementation 'com.google.android.gms:play-services-auth:21.0.0'
}
Funktionsweise
Die Phone Number Hint API verwendet ein PendingIntent
, um den Vorgang zu starten. Nachdem der PendingIntent gestartet wurde, 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 wird dann dem Entwickler zur Verfügung gestellt, damit er sie aus dem Intent
abrufen kann.
GetPhoneNumbeHintIntentRequest-Objekt erstellen
Erstellen Sie zuerst ein GetPhoneNumberHintIntentRequest
-Objekt mit der angegebenen GetPhoneNumberHintIntentRequest.Builder()
-Methode. Dieses Anfrageobjekt kann dann verwendet werden, um ein Intent
abzurufen, um den Vorgang für den Telefonnummernhinweis zu starten.
Kotlin
val request: GetPhoneNumberHintIntentRequest = GetPhoneNumberHintIntentRequest.builder().build()
Java
GetPhoneNumberHintIntentRequest request = GetPhoneNumberHintIntentRequest.builder().build();
Hinweis zur Telefonnummer wird angefordert
Rufen Sie SignInClient.getPhoneNumberHintIntent()
auf und übergeben Sie das vorherige GetPhoneNumberHintIntentRequest
-Objekt, um die PendingIntent
abzurufen, um 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
ActivityResultLauncherphoneNumberHintIntentResultLauncher = ... 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 die 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
ActivityResultLauncherphoneNumberHintIntentResultLauncher = 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); } } });