Phone Number Hint API (một thư viện do Dịch vụ Google Play cung cấp) mang đến một cách thức dễ dàng để hiển thị số điện thoại (dựa trên SIM) của người dùng dưới dạng gợi ý.
Sau đây là những lợi ích khi sử dụng gợi ý về số điện thoại:
- Không cần yêu cầu cấp thêm quyền
- Không cần người dùng nhập số điện thoại theo cách thủ công
- Không cần Tài khoản Google
- Không liên quan trực tiếp đến quy trình đăng nhập hoặc đăng ký
- Hỗ trợ nhiều phiên bản Android hơn so với tính năng Tự động điền
Cách hoạt động
Phone Number Hint API sử dụng PendingIntent
để bắt đầu quy trình. Sau khi PendingIntent được khởi chạy, người dùng sẽ thấy một giao diện người dùng liệt kê tất cả số điện thoại (dựa trên SIM). Sau đó, người dùng có thể chọn số điện thoại mà họ muốn sử dụng hoặc huỷ quy trình.
Sau đó, số điện thoại đã chọn sẽ được cung cấp cho nhà phát triển để truy xuất từ Intent
.

Để 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 phần phụ thuộc Dịch vụ Google Play dành cho Phone Number Hint API 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.4.0'
}
Tạo đối tượng GetPhoneNumbeHintIntentRequest
Bắt đầu bằng cách tạo một đối tượng GetPhoneNumberHintIntentRequest
bằng phương thức GetPhoneNumberHintIntentRequest.Builder()
được cung cấp. Sau đó, bạn có thể dùng đối tượng yêu cầu này để nhận Intent
nhằm bắt đầu quy trình 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 ý về 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 quy trình 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); });
Đang 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); } } });