Tích hợp tính năng tự động điền bằng bàn phím

Kể từ Android 11, bàn phím và các trình chỉnh sửa phương thức nhập khác (IME) có thể hiển thị các đề xuất tự động điền trên cùng dòng (inline), trong dải đề xuất, v.v. thay vì hệ thống hiển thị các đề xuất này trong trình đơn thả xuống. Vì các đề xuất tự động điền này có thể chứa dữ liệu riêng tư, chẳng hạn như mật khẩu hoặc thông tin thẻ tín dụng, nên các đề xuất sẽ bị ẩn khỏi IME cho đến khi người dùng chọn một mục. IME và trình quản lý mật khẩu đều cần được cập nhật để sử dụng tính năng này. Nếu IME hoặc trình quản lý mật khẩu không hỗ trợ tính năng tự động điền cùng dòng, các đề xuất sẽ hiển thị trong trình đơn thả xuống, tương tự như trước đây trong Android 11.

Luồng công việc

Để hiểu cách hoạt động của tính năng tự động điền cùng dòng, bạn nên thực hiện quy trình này. Trong quy trình này, IME chỉ bàn phím hiện tại hoặc trình chỉnh sửa phương thức nhập khác, và trình cung cấp đề xuất có nghĩa là trình cung cấp phù hợp của các đề xuất tự động điền đó. Tùy thuộc vào trường nhập dữ liệu và tùy chọn cài đặt của người dùng, trường cung cấp đề xuất có thể là nền tảng hoặc dịch vụ tự động điền.

  1. Người dùng tập trung vào một trường nhập dữ liệu kích hoạt việc tự động điền, chẳng hạn như trường nhập mật khẩu hoặc thông tin thẻ tín dụng.

  2. Nền tảng này sẽ truy vấn IME hiện tại và trình cung cấp đề xuất thích hợp để xem chúng có hỗ trợ tính năng tự động điền cùng dòng hay không. Nếu IME hoặc trình cung cấp đề xuất không hỗ trợ tính năng tự động điền cùng dòng, thì đề xuất sẽ hiển thị trong trình đơn thả xuống, như trên Android 10 trở xuống.

  3. Nền tảng này sẽ yêu cầu IME đưa ra yêu cầu đề xuất. Yêu cầu đề xuất này nêu cụ thể số đề xuất tối đa mà IME muốn, đồng thời cung cấp thông số trình bày cho mỗi đề xuất. Thông số trình bày cho biết các dữ liệu như kích thước tối đa, kích thước văn bản, màu sắc và dữ liệu phông chữ cho phép trình cung cấp đề xuất khớp giao diện và tinh thần của IME.

  4. Nền tảng này sẽ yêu cầu trình cung cấp đề xuất cung cấp tối đa số đề xuất đã yêu cầu. Mỗi đề xuất bao gồm một lệnh gọi lại để phóng to View chứa giao diện người dùng của đề xuất.

  5. Nền tảng này sẽ thông báo cho IME biết rằng các đề xuất đã sẵn sàng. IME hiển thị các đề xuất bằng cách gọi phương thức cuộc gọi lại để tăng cường View của đề xuất. Để bảo vệ thông tin riêng tư của người dùng, IME không xem nội dung đề xuất ở giai đoạn này.

  6. Nếu người dùng chọn một trong các đề xuất, IME sẽ được thông báo theo cách tương tự như khi người dùng chọn đề xuất từ danh sách thả xuống.

Các phần sau mô tả cách định cấu hình IME hoặc trình quản lý mật khẩu của bạn để hỗ trợ tính năng tự động điền cùng dòng.

Cấu hình các IME để hỗ trợ tự động điền cùng dòng

Phần này mô tả cách định cấu hình IME để hỗ trợ tự động điền cùng dòng. Nếu IME của bạn không hỗ trợ tính năng tự động điền cùng dòng, thì theo mặc định, nền tảng sẽ hiển thị đề xuất điền tự động trong trình đơn thả xuống.

IME của bạn phải đặt thuộc tính supportsInlinedSuggestions thành true:

<input-method
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsInlineSuggestions="true"/>

Khi nền tảng cần đề xuất tự động điền, nó sẽ gọi phương thức InputMethodService.onCreateInlineSuggestionsRequest() của IME. Bạn phải triển khai phương thức này. Trả về một InlineSuggestionsRequest nêu rõ những thông tin sau:

  • Số lượng đề xuất mà IME của bạn muốn nhận được
  • InlinePresentationSpec cho từng đề xuất, xác định cách hiển thị đề xuất

Khi có đề xuất, nền tảng sẽ gọi phương thức onInlineSuggestionsResponse() của IME, chuyển một InlineSuggestionsResponse chứa đề xuất. Bạn phải triển khai phương thức này. Phương thức triển khai của bạn sẽ gọi InlineSuggestionsResponse.getInlineSuggestions() để nhận danh sách đề xuất, sau đó tăng cường từng đề xuất bằng cách gọi InlineSuggestion.inflate().

Cấu hình các dịch vụ tự động điền để hỗ trợ tự động điền cùng dòng

Phần này mô tả cách định cấu hình trình quản lý mật khẩu để hỗ trợ tính năng tự động điền cùng dòng. Nếu ứng dụng của bạn không hỗ trợ tính năng tự động điền cùng dòng, thì theo mặc định, nền tảng này sẽ hiển thị các đề xuất điền tự động trong trình đơn thả xuống.

Trình quản lý mật khẩu của bạn phải đặt thuộc tính supportsInlinedSuggestions thành true:

<autofill-service
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsInlineSuggestions="true"/>

Khi IME cần đề xuất điền tự động, nền tảng này sẽ gọi phương thức onFillRequest() của dịch vụ điền tự động giống như đã làm ở các phiên bản trước Android 11. Tuy nhiên, dịch vụ của bạn phải gọi phương thứcgetInlineSuggestionsRequest() của đối tượng FillRequest đã chuyển để nhận InlineSuggestionsRequest do IME tạo. InlineSuggestionsRequest chỉ định số đề xuất cùng dòng cần thiết và cách trình bày từng đề xuất. Nếu IME không hỗ trợ đề xuất cùng dòng, phương thức sẽ trả về null.

Dịch vụ điền tự động của bạn sẽ tạo ra các đối tượng InlinePresentation, lên tới số tối đa được yêu cầu trong InlineSuggestionsRequest. Bản trình bày của bạn phải tuân thủ các quy định ràng buộc về kích thước do InlineSuggestionsRequest chỉ định. Để gửi lại các đề xuất cho IME, hãy gọi Dataset.Builder.setValue()một lần cho từng đề xuất. Android 11 cung cấp các phiên bản mới của Dataset.Builder.setValue() để hỗ trợ đề xuất cùng dòng.

Lưu ý: Mặc dù IME được dành để sử dụng các đề xuất mà dịch vụ của bạn cung cấp, nhưng không có gì đảm bảo rằng IME sẽ thực hiện việc này.