API Gợi ý số điện thoại, một thư viện được Dịch vụ Google Play cung cấp, cung cấp một cách dễ dàng để hiển thị số điện thoại của người dùng (dựa trên SIM) dưới dạng gợi ý.
Lợi ích của việc sử dụng Gợi ý số điện thoại bao gồm:
- Không cần yêu cầu cấp quyền nào khác
- Người dùng không cần nhập số điện thoại theo cách thủ công
- Không cần có Tài khoản Google
- Không liên quan trực tiếp đến quy trình đăng nhập/đăng ký
- Hỗ trợ nhiều hơn cho các phiên bản Android so với tính năng Tự động điền
Trước khi bắt đầu
Để chuẩn bị cho ứng dụng của bạn, hãy hoàn tất các bước trong những phần sau.
Định cấu hình ứng dụng
Thêm Dịch vụ Google Play
phần phụ thuộc cho API Gợi ý số điện thoại vào
tệp bản dựng Gradle của mô-đun,
thường là app/build.gradle
:
apply plugin: 'com.android.application'
...
dependencies {
implementation 'com.google.android.gms:play-services-auth:21.2.0'
}
Cách hoạt động
API Gợi ý số điện thoại sử dụng PendingIntent
để bắt đầu luồng. Sau khi PendingIntent chạy, người dùng sẽ
hiển thị với một giao diện người dùng, liệt kê tất cả các số điện thoại (dựa trên SIM). Người dùng có thể
sau đó chọn chọn số điện thoại mà họ muốn sử dụng hoặc huỷ quy trình.
Sau đó, nhà phát triển sẽ nhận được số điện thoại đã chọn để
truy xuất từ Intent
.
Tạo đối tượng GetPhoneNumbeHintIntentRequest
Bắt đầu bằng cách tạo đối tượng GetPhoneNumberHintIntentRequest
bằng phương thức
đã cung cấp GetPhoneNumberHintIntentRequest.Builder()
. Sau đó, đối tượng yêu cầu này có thể được dùng để lấy Intent
cho việc bắt đầu
Luồng gợi ý số điện thoại.
Kotlin
val request: GetPhoneNumberHintIntentRequest = GetPhoneNumberHintIntentRequest.builder().build()
Java
GetPhoneNumberHintIntentRequest request = GetPhoneNumberHintIntentRequest.builder().build();
Yêu cầu gợi ý số điện thoại
Gọi SignInClient.getPhoneNumberHintIntent()
,
truyền vào đối tượng GetPhoneNumberHintIntentRequest
trước đó,
để truy xuất PendingIntent
nhằm bắt đầu luồng Gợi ý số điện thoại.
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); });
Truy xuất số điện thoại
Truyền Intent
vào SignInClient.getPhoneNumberFromIntent
để truy xuất số điện thoại.
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); } } });