Gợi ý số điện thoại

API gợi ý số điện thoại, một thư viện sử dụng các dịch vụ của Google Play, 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) làm gợi ý.

Lợi ích của việc sử dụng gợi ý về số điện thoại bao gồm:

  • Bạn không cần thêm quyền nào khác
  • Giúp 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 có mối liên hệ trực tiếp với quy trình đăng nhập/đăng ký
  • Hỗ trợ các phiên bản Android rộng hơn 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 phần phụ thuộc Dịch vụ Google Play dành 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:20.4.1'
  }

Cách hoạt động

API gợi ý 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ẽ 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 đó, nhà phát triển sẽ cung cấp số điện thoại đã chọn để truy xuất từ Intent.

Chế độ cài đặt và giao diện người dùng cho gợi ý về số điện thoại.
Hình 1. Giao diện người dùng và các chế độ cài đặt gợi ý về số điện thoại

Tạo đối tượng GetPhoneNumbeHintIntentRequest

Hãy bắt đầu bằng cách tạo một đối tượng GetPhoneNumberHintIntentRequest bằng cách sử dụng phương thức GetPhoneNumberHintIntentRequest.Builder() được cung cấp. Sau đó, đối tượng yêu cầu này có thể được dùng để 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();

Gợi ý số điện thoại yêu cầu

Gọi SignInClient.getPhoneNumberHintIntent(), chuyển đố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 = ...

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

ActivityResultLauncher phoneNumberHintIntentResultLauncher = ...

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 vào Intent tới 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

ActivityResultLauncher phoneNumberHintIntentResultLauncher =
  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);
              }
          }
  });