AppFunctions cho phép ứng dụng Android của bạn chia sẻ các phần chức năng cụ thể mà hệ thống cũng như nhiều trợ lý và tác nhân AI có thể khám phá và gọi. Bằng cách xác định các hàm này, bạn cho phép ứng dụng của mình cung cấp các dịch vụ, dữ liệu và thao tác cho hệ điều hành Android, cho phép người dùng hoàn thành các tác vụ thông qua các tác nhân AI và hoạt động tương tác ở cấp hệ thống.
AppFunctions đóng vai trò là phiên bản di động của các công cụ trong Giao thức ngữ cảnh mô hình (MCP). Mặc dù MCP thường chuẩn hoá cách các tác nhân kết nối với các công cụ phía máy chủ, nhưng AppFunctions cung cấp cùng một cơ chế cho các ứng dụng Android. Điều này cho phép bạn hiển thị các chức năng của ứng dụng dưới dạng "công cụ" có thể điều phối mà các ứng dụng được uỷ quyền (trình gọi) có thể khám phá và thực thi để đáp ứng ý định của người dùng. Người gọi phải có quyền EXECUTE_APP_FUNCTIONS để khám phá và thực thi AppFunction, đồng thời có thể bao gồm các tác nhân, ứng dụng và trợ lý AI như Gemini.
AppFunctions hoạt động với các thiết bị chạy Android 16 trở lên.
Ví dụ về các trường hợp sử dụng
AppFunctions cung cấp một cơ chế mạnh mẽ để tự động hoá các tác vụ và tinh giản hoạt động tương tác của người dùng. Bằng cách cho thấy các chức năng của ứng dụng, bạn cho phép người dùng hoàn thành các mục tiêu phức tạp bằng ngôn ngữ tự nhiên, thường bỏ qua nhu cầu điều hướng từng bước theo cách thủ công bằng giao diện người dùng của bạn.
Các tình huống sau đây minh hoạ cách sử dụng AppFunctions để thúc đẩy trải nghiệm trong nhiều danh mục ứng dụng:
- Quản lý công việc và tăng năng suất
- Yêu cầu của người dùng: "Nhắc tôi đến lấy gói hàng tại nơi làm việc hôm nay lúc 5 giờ chiều".
- Hành động AppFunction: Phương thức gọi xác định ứng dụng quản lý tác vụ có liên quan và gọi một hàm để tạo tác vụ, tự động điền sẵn các trường tiêu đề, thời gian và vị trí dựa trên câu lệnh của người dùng.
- Truyền thông và giải trí
- Yêu cầu của người dùng: "Tạo một danh sách phát mới gồm những album nhạc jazz hàng đầu của năm nay".
- Thao tác AppFunction: Phương thức gọi thực thi một hàm tạo danh sách phát trong một ứng dụng âm nhạc, truyền ngữ cảnh như "các đĩa nhạc jazz hàng đầu năm 2026" làm truy vấn để tạo và khởi chạy nội dung ngay lập tức.
- Quy trình công việc trên nhiều ứng dụng
- Yêu cầu của người dùng: "Tìm công thức mì trong email của Lisa và thêm các nguyên liệu vào danh sách mua sắm của tôi".
- Thao tác AppFunction: Yêu cầu này sử dụng các hàm từ nhiều ứng dụng. Trước tiên, người gọi sử dụng chức năng tìm kiếm của ứng dụng email để truy xuất nội dung. Sau đó, ứng dụng này sẽ trích xuất các thành phần có liên quan và gọi hàm của một ứng dụng danh sách mua sắm để điền danh sách của người dùng.
- Lịch và lên lịch
- Yêu cầu của người dùng: "Thêm tiệc sinh nhật của mẹ vào lịch của tôi vào 6 giờ tối thứ Hai tuần sau".
- Thao tác AppFunction: Ứng dụng có tính chất đại lý đã được phê duyệt sẽ gọi chức năng "tạo sự kiện" của ứng dụng lịch, phân tích cú pháp ngữ cảnh liên quan như "thứ Hai tới" và "6 giờ chiều" để tạo mục nhập mà không cần người dùng phải mở lịch theo cách thủ công.
Cách hoạt động của AppFunctions
AppFunctions là một tính năng nền tảng Android 16 và một thư viện Jetpack đi kèm cho phép các ứng dụng hiển thị các chức năng cụ thể để phương thức gọi (chẳng hạn như ứng dụng tác nhân) truy cập và thực thi trên thiết bị.
Sơ đồ sau đây minh hoạ quy trình thông thường về cách các ứng dụng chia sẻ AppFunction với một tác nhân và sau đó thực thi. Các tác nhân có thể xem xét cả công cụ MCP từ xa phía máy chủ và AppFunctions cục bộ khi xử lý các yêu cầu của người dùng. Sau đây là quy trình chi tiết để sử dụng AppFunctions cục bộ:
- Khai báo AppFunction: Ứng dụng Android được tạo để hiển thị AppFunction của ứng dụng, chẳng hạn như "Tạo ghi chú" hoặc "Gửi tin nhắn".
- Tạo lược đồ: Thư viện AppFunctions Jetpack tạo một tệp lược đồ XML liệt kê tất cả AppFunctions đã khai báo trong ứng dụng. Hệ điều hành Android dùng tệp này để lập chỉ mục các AppFunctions có sẵn.
- Truy xuất siêu dữ liệu: Tác nhân có thể truy xuất siêu dữ liệu AppFunction bằng cách truy vấn siêu dữ liệu đó.
- Lựa chọn và thực thi AppFunction: Dựa trên lời nhắc của người dùng, tác nhân sẽ chọn và thực thi AppFunction phù hợp với các tham số thích hợp.
Thư viện AppFunctions Jetpack giúp đơn giản hoá việc hiển thị chức năng của ứng dụng.
Với trình xử lý chú giải, lập trình viên chú giải các hàm mà họ muốn hiển thị. Sau đó, các phương thức gọi có thể khám phá và gọi các hàm được lập chỉ mục này bằng cách sử dụng AppFunctionManager.
Trước khi gọi một hàm, người gọi phải xác minh rằng thiết bị hỗ trợ tính năng AppFunctions bằng cách cố gắng truy xuất một phiên bản của AppFunctionManager. Sau khi được hỗ trợ, các phương thức gọi có thể xác minh xem một hàm cụ thể có được bật trong ứng dụng mục tiêu hay không bằng cách sử dụng isAppFunctionEnabled(packageName, functionId). Để truy vấn trạng thái của các hàm trong những gói khác, bạn cần có android.permission.EXECUTE_APP_FUNCTIONS permission.
Ứng dụng của bạn không bắt buộc phải xác minh xem tính năng AppFunction có được hỗ trợ hay không; việc này sẽ tự động được xử lý trong thư viện Jetpack. Ví dụ: AppFunctionManager có thể xác minh xem tính năng này có được hỗ trợ hay không.
Sau đây là ví dụ về AppFunctions cho một ứng dụng ghi chú có các chức năng tạo, chỉnh sửa và liệt kê ghi chú:
/** * A note app's [AppFunction]s. */ class NoteFunctions( private val noteRepository: NoteRepository ) { /** * Lists all available notes. * * @param appFunctionContext The context in which the AppFunction is executed. */ @AppFunction(isDescribedByKDoc = true) suspend fun listNotes(appFunctionContext: AppFunctionContext): List<Note>? { return noteRepository.appNotes.ifEmpty { null }?.toList() } /** * Adds a new note to the app. * * @param appFunctionContext The context in which the AppFunction is executed. * @param title The title of the note. * @param content The note's content. */ @AppFunction(isDescribedByKDoc = true) suspend fun createNote( appFunctionContext: AppFunctionContext, title: String, content: String ): Note { return noteRepository.createNote(title, content) } /** * Edits a single note. * * @param appFunctionContext The context in which the AppFunction is executed. * @param noteId The target note's ID. * @param title The note's title if it should be updated. * @param content The new content if it should be updated. */ @AppFunction(isDescribedByKDoc = true) suspend fun editNote( appFunctionContext: AppFunctionContext, noteId: Int, title: String?, content: String?, ): Note? { return noteRepository.updateNote(noteId, title, content) } } /** * A note. */ @AppFunctionSerializable(isDescribedByKDoc = true) data class Note( /** The note's identifier */ val id: Int, /** The note's title */ val title: String, /** The note's content */ val content: String )
Câu hỏi thường gặp
Phần sau đây giải đáp các câu hỏi thường gặp về AppFunctions.
H: Tôi là một nhà phát triển ứng dụng. Tôi có thể triển khai AppFunctions ngay hôm nay không?
Đáp: Có. Bạn có thể triển khai và kiểm thử AppFunctions trong ứng dụng của mình bằng cách làm theo hướng dẫn được trình bày chi tiết trong các phần trước.
Hỏi: Tôi đã triển khai AppFunctions trong ứng dụng của mình. Tại sao tác nhân hệ thống của tôi không truy cập được vào các AppFunctions này?
A: AppFunctions là một tính năng thử nghiệm. Để đánh giá cẩn thận chất lượng của trải nghiệm tổng thể trong giai đoạn thử nghiệm này, chỉ một số ít ứng dụng và tác nhân hệ thống mới có thể truy cập vào toàn bộ quy trình.
Hỏi: Tôi đang phát triển một tác nhân. Tôi có thể truy cập vào AppFunctions do các ứng dụng cung cấp không?
A: Tác nhân kiểm thử của bạn có thể truy cập vào AppFunctions trong môi trường phát triển. Trong giai đoạn thử nghiệm này, chỉ một số ít tác nhân hệ thống mới có thể truy cập và thực thi AppFunctions trong quá trình phát hành công khai.
Hỏi: Những tác nhân hệ thống nào có quyền truy cập vào AppFunctions?
A: Chỉ một số ít tác nhân hệ thống mới có thể truy cập vào toàn bộ quy trình trong khi AppFunctions đang ở giai đoạn thử nghiệm.
Hỏi: Làm cách nào để chuẩn bị ứng dụng cho giai đoạn phát hành rộng rãi của AppFunctions?
A: Cân nhắc những tính năng của ứng dụng mà bạn muốn cung cấp cho tính năng tự động hoá dựa trên tác nhân. Bạn có thể triển khai AppFunctions trong ứng dụng của mình. Để làm như vậy, hãy làm theo các bước trong các phần trước trên trang này và xác minh rằng chúng đã được đăng ký trên thiết bị bằng cách gọi adb shell cmd app_function
list-app-functions.
Hỏi: Tôi có thể được sử dụng sớm trải nghiệm toàn diện dành cho nhà phát triển dựa trên tác nhân không?
Đáp: Chúng tôi đang triển khai Chương trình tiếp cận sớm (EAP) để tích hợp một số ứng dụng chọn lọc trong quá trình thử nghiệm trải nghiệm khép kín dành cho nhà phát triển cần thiết để ra mắt AppFunctions cho phiên bản phát hành công khai trên Android. Bạn có thể đăng ký tham gia chương trình tiếp cận sớm để tích hợp AppFunctions thông qua biểu mẫu đăng ký tham gia chương trình tiếp cận sớm này. Khi đăng ký bày tỏ sự quan tâm, bạn KHÔNG tự động có quyền truy cập vào toàn bộ quy trình tích hợp. Chúng tôi sẽ gửi email cho bạn nếu ứng dụng của bạn được chọn tham gia chương trình tiếp cận sớm hoặc để thông báo cho bạn khi AppFunctions được cung cấp công khai.
Hỏi: Làm cách nào để gửi ý kiến phản hồi về AppFunctions?
Đáp: Bạn có thể cung cấp ý kiến phản hồi về API bằng cách gửi vấn đề và đăng ký tham gia biểu mẫu chương trình tiếp cận sớm.