Google Play Hizmetleri tarafından desteklenen bir kitaplık olan Phone Number Hint API, 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ği gerekmez
- 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ına bağ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.

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:21.4.0'
}
GetPhoneNumbeHintIntentRequest nesnesi oluşturma
Sağlanan GetPhoneNumberHintIntentRequest.Builder()
yöntemini kullanarak GetPhoneNumberHintIntentRequest
nesnesi oluşturarak başlayın. Bu istek nesnesi daha sonra Intent
almak için kullanılabilir. Böylece Telefon Numarası İpucu akışı başlatılabilir.
Kotlin
val request: GetPhoneNumberHintIntentRequest = GetPhoneNumberHintIntentRequest.builder().build()
Java
GetPhoneNumberHintIntentRequest request = GetPhoneNumberHintIntentRequest.builder().build();
Telefon Numarası İpucu İsteği
Telefon numarası ipucu akışını başlatmak için SignInClient.getPhoneNumberHintIntent()
işlevini çağırın ve önceki GetPhoneNumberHintIntentRequest
nesnesini ileterek PendingIntent
öğesini alı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
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); });
Telefon numarasını alma
Telefon numarasını almak için Intent
değerini SignInClient.getPhoneNumberFromIntent
olarak 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
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); } } });