«میانای برنامهسازی کاربردی اشاره شماره تلفن»، کتابخانهای که از خدمات Google Play نیرو میگیرد، روشی آسان برای نمایش شماره تلفنهای کاربر (مبتنی بر سیمکارت) بهعنوان اشاره ارائه میدهد.
مزایای استفاده از «راهنمایی شماره تلفن» شامل موارد زیر است:
- به درخواست اجازه اضافی نیاز نیست
- نیاز کاربر به تایپ دستی شماره تلفن را ازبین میبرد
- به «حساب Google» نیاز نیست
- مستقیماً به جریانهای کار ورود به سیستم یا ثبتنام مرتبط نیست
- پشتیبانی گستردهتر از نسخههای Android در مقایسه با «تکمیل خودکار»
روش کار
Phone Number Hint API از PendingIntent
برای شروع جریان استفاده میکند. پساز راهاندازی PendingIntent، میانای کاربری به کاربر ارائه میشود که همه شمارههای تلفن (سیمکارتمحور) را فهرست میکند. سپس کاربر میتواند
شماره تلفنی را که میخواهد استفاده کند انتخاب کند یا جریان را لغو کند.
شماره تلفن انتخابشده دراختیار توسعهدهنده قرار میگیرد تا
آن را از Intent بازیابی کند.
برای آماده کردن برنامهتان، مراحل بخشهای زیر را تکمیل کنید.
پیکربندی برنامه
وابستگی خدمات Google Play
را برای «میانای برنامهسازی کاربردی اشاره شماره تلفن» به
فایل ساخت Gradle واحد
اضافه کنید،
که معمولاً app/build.gradle است:
apply plugin: 'com.android.application'
...
dependencies {
implementation 'com.google.android.gms:play-services-auth:22.0.0'
}
ایجاد شیء GetPhoneNumbeHintIntentRequest
با ایجاد یک شیء GetPhoneNumberHintIntentRequest بااستفاده از روش
ارائهشده GetPhoneNumberHintIntentRequest.Builder()
شروع کنید. سپس میتوان از این شیء درخواست برای دریافت Intent بهمنظور شروع
جریان «راهنمایی شماره تلفن» استفاده کرد.
کاتلین
val request: GetPhoneNumberHintIntentRequest = GetPhoneNumberHintIntentRequest.builder().build()
جاوا
GetPhoneNumberHintIntentRequest request = GetPhoneNumberHintIntentRequest.builder().build();
درحال درخواست راهنمایی شماره تلفن
با SignInClient.getPhoneNumberHintIntent() تماس بگیرید،
شیء GetPhoneNumberHintIntentRequest قبلی را ارسال کنید،
تا PendingIntent را برای شروع کردن گردش کار «راهنمایی شماره تلفن» بازیابی کنید.
کاتلین
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") }
جاوا
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); });
درحال بازیابی شماره تلفن
برای بازیابی شماره تلفن، Intent را به SignInClient.getPhoneNumberFromIntent
ارسال کنید.
کاتلین
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") } }
جاوا
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); } } });