Telefon Numarası İpucu

Google Play Hizmetleri tarafından desteklenen bir kitaplık olan Telefon Numarası İpucu API'si, kullanıcının (SIM tabanlı) telefon numaralarını ipucu olarak göstermenin sorunsuz bir yolunu sunar.

Telefon Numarası İpucu'nu kullanmanın avantajları şunlardır:

  • Ek izin isteğinde bulunulmaz.
  • Kullanıcının telefon numarasını manuel olarak yazmasına gerek kalmaz.
  • Google Hesabı gerekmez
  • Doğrudan oturum açma veya kaydolma iş akışlarıyla bağlantılı değildir.
  • Otomatik doldurmaya kıyasla Android sürümleri için daha geniş destek

İşleyiş şekli

Telefon Numarası İpucu API'si, akışı başlatmak için PendingIntent kullanır. PendingIntent başlatıldıktan sonra kullanıcıya tüm (SIM tabanlı) telefon numaralarının listelendiği bir kullanıcı arayüzü gösterilir. Kullanıcı daha sonra kullanmak istediği telefon numarasını seçebilir veya akışı iptal edebilir. Seçilen telefon numarası, geliştiricinin Intent üzerinden alabilmesi için kullanılabilir hale getirilir.

Telefon numarası ipucu kullanıcı arayüzü ve ayarları.
Şekil 1. Telefon Numarası İpucu kullanıcı arayüzü ve ayarları

Uygulamanızı hazırlamak için aşağıdaki bölümlerdeki adımları tamamlayın.

Uygulamanızı yapılandırma

Telefon Numarası İpucu API'si için Google Play Hizmetleri bağımlılığını modülünüzün Gradle derleme dosyasına ekleyin. Bu dosya genellikle app/build.gradle olur:

  apply plugin: 'com.android.application'

  ...

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

GetPhoneNumbeHintIntentRequest nesnesi oluşturma

Sağlanan GetPhoneNumberHintIntentRequest.Builder() yöntemini kullanarak GetPhoneNumberHintIntentRequest nesnesi oluşturarak başlayın. Bu istek nesnesi daha sonra, Telefon Numarası İpucu akışını başlatmak için Intent almak üzere kullanılabilir.

Kotlin

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

Java

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

Telefon numarası ipucu isteme

Telefon numarası ipucu akışını başlatmak için PendingIntent değerini almak üzere önceki GetPhoneNumberHintIntentRequest nesnesini ileterek SignInClient.getPhoneNumberHintIntent() işlevini çağırın.

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

Telefon numarasını alma

Telefon numarasını almak için SignInClient.getPhoneNumberFromIntent'a Intent iletin.

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