Telefon Numarası İpucu

Google Play Hizmetleri tarafından desteklenen bir kitaplık olan Phone Numberİpucu API'si, kullanıcının (SIM tabanlı) telefon numaralarını ipucu olarak göstermek için sorunsuz bir yol sunar.

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

  • Ek izin isteği gerekmez
  • Kullanıcının, telefon numarasını manuel olarak yazma ihtiyacını ortadan kaldırır
  • Google hesabı gerekmez
  • Oturum açma/kayıt iş akışlarına doğrudan bağlı değildir
  • Otomatik doldurmaya kıyasla Android sürümleri için daha kapsamlı destek

Başlamadan önce

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

Uygulamanızı yapılandırma

Proje düzeyindeki build.gradle dosyanıza Google's Maven deposunu hem buildscript hem de allprojects bölümlerinize ekleyin:

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

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

Google Play Hizmetleri Telefon Bağımlılığını module's Gradle build file genellikle app/build.gradle olmak üzere ekleyin:

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

İşleyiş şekli

Telefon Numarası İpucu API'si akışı başlatmak için bir PendingIntent kullanır. PendingIntent başlatıldıktan sonra kullanıcıya, tüm (SIM tabanlı) telefon numaralarını listeleyen bir kullanıcı arayüzü sunulur. Kullanıcı daha sonra akışı kullanmak istediği telefon numarasını seçebilir veya akışı iptal edebilir. Seçili telefon numarası daha sonra Intent üzerinden alınması için geliştiriciye sunulur.

Telefon Numarası İpucu Kullanıcı Arayüzü ve Ayarlar.
Şekil 1. Telefon Numarası İpucu Kullanıcı Arayüzü ve Ayarlar

GetPhoneNumbeHintIntentRequest nesnesi oluşturma

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

Kotlin

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

Java

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

Telefon Numarası İsteme İpucu

Telefon Numarası İpucu akışını başlatmak için PendingIntent öğesini almak üzere önceki GetPhoneNumberHintIntentRequest nesnesinden geçen SignInClient.getPhoneNumberHintIntent() çağrısı yapın.

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

Telefon Numarası Alınıyor

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

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