API Gợi ý số điện thoại, một thư viện sử dụng Dịch vụ Google Play, cung cấp một cách 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 ý.
Lợi ích của việc sử dụng Gợi ý số điện thoại bao gồm:
- Không cần thêm yêu cầu cấp quyền nào
- Người dùng không cần phải tự nhập số điện thoại
- 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ợ rộng 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
Trong tệp build.gradle
cấp dự án, hãy thêm kho lưu trữ Maven
của Google vào cả hai mục buildscript
và allprojects
:
buildscript {
repositories {
google()
mavenCentral()
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
Thêm phần phụ thuộc Dịch vụ Google Play
cho API gợi ý cho số điện thoại vào
tệp bản dựng Gradle mô-đun
của bạn, thường là app/build.gradle
:
dependencies {
implementation 'com.google.android.gms:play-services-auth:20.2.0'
}
Cách hoạt động
API gợi ý cho số điện thoại sử dụng PendingIntent
để bắt đầu quy trình. Sau khi khởi chạy PendingIntent, người dùng sẽ
được hiển thị với 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). Sau đó, người dùng có thể
chọn một số điện thoại mà họ muốn sử dụng hoặc hủy luồng.
Sau đó, nhà phát triển sẽ cung cấp số điện thoại đã chọn để
truy xuất từ Intent
.

Tạo đối tượng GetPhoneNumbeGợiIntentRequest
Bắt đầu bằng cách tạo đối tượng GetPhoneNumberHintIntentRequest
bằng cách sử dụng
phương thức GetPhoneNumberHintIntentRequest.Builder()
được cung cấp. Sau đó, bạn có thể sử dụng đối tượng yêu cầu này để lấy Intent
để bắt đầu quy trình
Gợi ý về số điện thoại.
Kotlin
val request: GetPhoneNumberHintIntentRequest = GetPhoneNumberHintIntentRequest.builder().build()
Java
GetPhoneNumberHintIntentRequest request = GetPhoneNumberHintIntentRequest.builder().build();
Gợi ý về số điện thoại
Gọi SignInClient.getPhoneNumberHintIntent()
,
chuyển vào đối tượng GetPhoneNumberHintIntentRequest
trước,
để truy xuất PendingIntent
để bắt đầu quy trình Gợi ý về số điện thoại.
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
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 lấy số điện thoại
Hãy chuyển Intent
đến SignInClient.getPhoneNumberFromIntent
để lấy số điện thoại.
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
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); } } });