Hỗ trợ nhiều người dùng

Android hỗ trợ nhiều người dùng trên một thiết bị Android bằng cách tách biệt tài khoản người dùng và dữ liệu ứng dụng. Ví dụ: cha mẹ có thể cho phép trẻ sử dụng máy tính bảng của gia đình, một gia đình có thể dùng chung một ô tô hoặc một nhóm phản ứng khẩn cấp có thể dùng chung một thiết bị di động để làm nhiệm vụ trực điện thoại.

Thuật ngữ

Android sử dụng các thuật ngữ sau đây khi mô tả người dùng và tài khoản Android.

Giải pháp chung

Tính năng quản lý thiết bị Android sử dụng các thuật ngữ chung sau:

  • Người dùng: Mỗi người dùng là một người thực tế khác nhau. Mỗi người dùng có dữ liệu ứng dụng riêng biệt và một số chế độ cài đặt riêng, cũng như giao diện người dùng để chuyển đổi rõ ràng giữa các người dùng. Người dùng có thể chạy ở chế độ nền khi người dùng khác đang hoạt động; hệ thống sẽ quản lý việc tắt người dùng để tiết kiệm tài nguyên khi thích hợp. Bạn có thể tạo người dùng phụ trực tiếp thông qua giao diện người dùng hoặc từ ứng dụng Quản trị thiết bị.
  • Tài khoản: Tài khoản nằm trong một người dùng nhưng không do người dùng xác định, cũng không phải người dùng được xác định hoặc liên kết với bất kỳ tài khoản nào. Người dùng và hồ sơ chứa các tài khoản riêng biệt của họ nhưng không bắt buộc phải có tài khoản để hoạt động. Danh sách tài khoản sẽ khác nhau tuỳ theo người dùng. Để biết thông tin chi tiết, hãy tham khảo định nghĩa lớp Tài khoản.
  • Hồ sơ: Hồ sơ đã tách riêng dữ liệu ứng dụng nhưng chia sẻ một số chế độ cài đặt trên toàn hệ thống (ví dụ: Wi-Fi và Bluetooth). Hồ sơ là một tập hợp con và liên kết với sự tồn tại của người dùng. Một người dùng có thể có nhiều hồ sơ. Hồ sơ được tạo thông qua ứng dụng Quản trị thiết bị. Một hồ sơ luôn có mối liên kết không thể thay đổi với một người dùng chính, do người dùng đã tạo hồ sơ xác định. Hồ sơ không tồn tại sau khi người dùng tạo hồ sơ ngừng hoạt động.
  • Ứng dụng: Dữ liệu của ứng dụng tồn tại trong mỗi người dùng được liên kết. Dữ liệu ứng dụng được đặt trong hộp cát tách biệt với các ứng dụng khác của cùng một người dùng. Các ứng dụng trong cùng một người dùng có thể tương tác với nhau thông qua IPC. Để biết thông tin chi tiết, hãy tham khảo Android cho doanh nghiệp.

Danh mục người dùng

Chức năng quản trị thiết bị Android sử dụng các danh mục người dùng sau.

  • Người dùng hệ thống: Người dùng đầu tiên được thêm vào thiết bị. Người dùng hệ thống không thể bị xoá, ngoại trừ khi đặt lại về trạng thái ban đầu và luôn chạy ngay cả khi người dùng khác đang ở nền trước. Người dùng này cũng có các đặc quyền và chế độ cài đặt đặc biệt mà chỉ người dùng này mới có thể đặt.
  • Người dùng hệ thống không có giao diện người dùng: Người dùng đầu tiên được thêm vào thiết bị nếu thiết bị được định cấu hình để chạy ở chế độ người dùng hệ thống không có giao diện người dùng (bằng cách đặt ro.fw.mu.headless_system_user=true). Người dùng hệ thống không có giao diện người dùng luôn chạy ở chế độ nền, vì vậy, các thiết bị như vậy cần có thêm người dùng trên nền trước để cho phép tương tác với người dùng.
  • Người dùng phụ: Bất kỳ người dùng nào được thêm vào thiết bị ngoài người dùng hệ thống. Người dùng phụ có thể bị xoá (bởi chính họ hoặc người dùng quản trị) và không thể ảnh hưởng đến người dùng khác trên một thiết bị. Những người dùng này có thể chạy trong nền và tiếp tục có kết nối mạng.
  • Người dùng khách: Người dùng phụ tạm thời. Người dùng khách có một tuỳ chọn rõ ràng để xoá nhanh người dùng khách khi không cần thiết nữa. Mỗi lần chỉ có thể có một người dùng khách.
  • Người dùng quản trị: Người dùng có quyền tạo và xoá người dùng khác, cũng như kiểm soát một số chế độ cài đặt chung cho nhiều người dùng. Theo mặc định, chỉ người dùng hệ thống mới là quản trị viên.

Danh mục hồ sơ

Android sử dụng các danh mục hồ sơ sau:

  • Hồ sơ được quản lý: Do một ứng dụng tạo ra để chứa dữ liệu công việc và ứng dụng. Các hồ sơ này do chủ sở hữu hồ sơ (ứng dụng đã tạo hồ sơ công ty) quản lý độc quyền. Trình chạy, thông báo và tác vụ gần đây được người dùng chính và hồ sơ công ty chia sẻ.
  • Hồ sơ bị hạn chế: Sử dụng các tài khoản dựa trên người dùng là cha mẹ. Người dùng này có thể kiểm soát những ứng dụng có trên hồ sơ bị hạn chế. Chỉ có trên máy tính bảng và thiết bị truyền hình.
  • Hồ sơ sao chép: Android hỗ trợ việc tạo một loại người dùng hồ sơ sao chép riêng biệt để cho phép chạy hai phiên bản của một ứng dụng trên thiết bị. AOSP không cung cấp hỗ trợ toàn diện cho tính năng này. Nhà sản xuất thiết bị gốc (OEM) cần thêm các tuỳ chỉnh để cung cấp tính năng hoàn chỉnh cho người dùng Android.
  • Hồ sơ riêng tư: Đây là một không gian hộp cát tách biệt với phần còn lại của thiết bị, có thể được khoá riêng biệt với người dùng chính. Hồ sơ riêng tư chỉ có thể tồn tại cho người dùng chính. Khi hồ sơ riêng tư được mở khoá, các ứng dụng sẽ xuất hiện trong phần cài đặt, Trang chia sẻ nội dung, Công cụ chọn ảnh và DocsUI, nhưng sẽ bị ẩn khi hồ sơ này bị khoá. Hồ sơ riêng tư có thể tồn tại trên cùng một thiết bị cùng với hồ sơ công việc và hồ sơ sao chép.

Loại người dùng

Android 11 đã xây dựng cách phân loại người dùng và hồ sơ nêu trên thành các loại người dùng được xác định rõ ràng, đại diện cho tất cả các loại người dùng và hồ sơ mà tính năng Nhiều người dùng trên Android cho phép.

Các loại người dùng AOSP được xác định trước được xác định trong frameworks/base/core/java/android/os/UserManager.java và hiện bao gồm:

  • android.os.usertype.full.SYSTEM
  • android.os.usertype.full.SECONDARY
  • android.os.usertype.full.GUEST
  • android.os.usertype.full.DEMO
  • android.os.usertype.full.RESTRICTED
  • android.os.usertype.profile.MANAGED
  • android.os.usertype.system.HEADLESS
  • android.os.usertype.profile.CLONE
  • android.os.usertype.profile.PRIVATE

Nhà sản xuất thiết bị gốc (OEM) có thể định cấu hình các loại người dùng này bằng cách phủ tệp frameworks/base/core/res/res/xml/config_user_types.xml. Điều này tạo điều kiện thay đổi cấu hình mặc định cho từng loại người dùng, bao gồm cả các quy tắc hạn chế, biểu tượng, huy hiệu và số lượng người dùng tối đa được phép.

Ngoài các loại người dùng AOSP có thể định cấu hình, OEM có thể xác định các loại hồ sơ mới bằng cách sử dụng tệp frameworks/base/core/res/res/xml/config_user_types.xml. Điều này cho phép OEM giới thiệu các loại hồ sơ không được quản lý của riêng họ nếu muốn. Tuy nhiên, OEM có trách nhiệm sửa đổi nền tảng theo yêu cầu để hỗ trợ các thay đổi, bao gồm cả việc sửa đổi mọi mã kiểm tra hồ sơ được quản lý để xử lý loại hồ sơ mới nếu thích hợp.

Bật tính năng nhiều người dùng

Tính năng nhiều người dùng bị tắt theo mặc định. Để bật tính năng này, nhà sản xuất thiết bị phải xác định một lớp phủ tài nguyên thay thế các giá trị sau trong frameworks/base/core/res/res/values/config.xml:

<!--  Maximum number of supported users -->
<integer name="config_multiuserMaximumUsers">1</integer>
<!--  Whether Multiuser UI should be shown -->
<bool name="config_enableMultiUserUI">false</bool>

Để áp dụng lớp phủ này và bật người dùng khách và người dùng phụ trên thiết bị, hãy sử dụng tính năng DEVICE_PACKAGE_OVERLAYS của hệ thống xây dựng Android để thay thế các giá trị cho:

  • config_multiuserMaximumUsers có giá trị lớn hơn 1
  • config_enableMultiUserUI với true

Nhà sản xuất thiết bị có thể quyết định số lượng người dùng tối đa. Nếu nhà sản xuất thiết bị hoặc các bên khác đã sửa đổi chế độ cài đặt, thì họ phải đảm bảo SMS và điện thoại hoạt động như được xác định trong Tài liệu định nghĩa về khả năng tương thích với Android (CDD).

Quản lý nhiều người dùng

Việc quản lý người dùng và hồ sơ (ngoại trừ hồ sơ bị hạn chế) được thực hiện bằng các ứng dụng gọi API theo phương thức lập trình trong lớp DevicePolicyManager để hạn chế việc sử dụng.

Các doanh nghiệp có thể sử dụng người dùng và hồ sơ để quản lý thời gian hoạt động và phạm vi của ứng dụng cũng như dữ liệu trên thiết bị, bằng cách sử dụng các loại được nêu trên cùng với API DevicePolicyManagerUserManager để xây dựng các giải pháp riêng biệt phù hợp với trường hợp sử dụng của họ.

Hành vi của hệ thống nhiều người dùng

Khi người dùng được thêm vào một thiết bị, một số chức năng sẽ bị hạn chế khi người dùng khác đang ở nền trước. Vì dữ liệu ứng dụng được phân tách theo người dùng, nên trạng thái của các ứng dụng đó sẽ khác nhau tuỳ theo người dùng. Ví dụ: email dành cho tài khoản của một người dùng hiện không nằm trong tiêu điểm sẽ không xuất hiện cho đến khi người dùng và tài khoản đó hoạt động trên thiết bị.

Lưu ý: Để bật hoặc tắt chức năng điện thoại và SMS cho người dùng phụ, hãy chuyển đến phần Cài đặt > Người dùng, chọn người dùng rồi tắt chế độ cài đặt Cho phép cuộc gọi điện thoại và SMS.

Có một số hạn chế khi người dùng phụ ở chế độ nền. Ví dụ: người dùng phụ ở chế độ nền không thể hiển thị giao diện người dùng hoặc kích hoạt các dịch vụ Bluetooth. Ngoài ra, quy trình hệ thống sẽ tạm dừng người dùng phụ ở chế độ nền nếu thiết bị cần thêm bộ nhớ cho các thao tác trong người dùng ở chế độ nền trước.

Khi sử dụng nhiều người dùng trên một thiết bị Android, hãy lưu ý những hành vi sau:

  • Thông báo sẽ xuất hiện cùng lúc cho tất cả tài khoản của một người dùng.
  • Thông báo cho người dùng khác sẽ không xuất hiện cho đến khi họ đang hoạt động.
  • Mỗi người dùng sẽ có một không gian làm việc để cài đặt và đặt ứng dụng.
  • Không có người dùng nào có quyền truy cập vào dữ liệu ứng dụng của người dùng khác.
  • Bất kỳ người dùng nào cũng có thể ảnh hưởng đến các ứng dụng đã cài đặt cho tất cả người dùng.
  • Người dùng quản trị có thể xoá ứng dụng hoặc thậm chí là toàn bộ không gian làm việc do người dùng phụ tạo.
  • Theo mặc định, thông tin từ phiên người dùng Khách sẽ không tồn tại khi thoát khỏi Chế độ khách. Nếu muốn thông tin từ phiên người dùng Khách lưu giữ lại, bạn phải tạo một tệp lớp phủ tài nguyên đặt config_guestUserAllowEphemeralStateChange thành false. Để biết thêm thông tin về cách tạo tệp lớp phủ, hãy tham khảo phần Tuỳ chỉnh bản dựng bằng lớp phủ tài nguyên.

Android Automotive nhiều người dùng

Android Automotive dựa vào việc triển khai nhiều người dùng của Android để cung cấp trải nghiệm thiết bị dùng chung.

Các loại người dùng trong ngành ô tô

Ngoài các loại người dùng nêu trên, bản dựng Automotive cũng phù hợp với những loại người dùng sau:

  • Người dùng hệ thống không có giao diện người dùng. Người dùng hệ thống lưu trữ tất cả dịch vụ hệ thống. Để hỗ trợ nhiều người dùng trên Automotive, người dùng hệ thống cũng phải không có giao diện người dùng. Chỉ có một người dùng không có giao diện người dùng. Người dùng hệ thống không có giao diện người dùng:
    • Phải luôn chạy ở chế độ nền.
    • Người dùng không thể xoá hoặc truy cập trực tiếp vào hồ sơ này, ngoại trừ trường hợp Cấp phép thiết bị. Ví dụ: người dùng không thể chuyển sang loại Người dùng này để thực hiện các thao tác như tải ứng dụng xuống hoặc thêm tài khoản.
    • Chỉ có thể xoá bằng cách đặt lại về trạng thái ban đầu.
  • Người dùng thường xuyên. Tương tự như Người dùng phụ được mô tả ở trên, ngoại trừ việc người dùng phụ:
    • Không chạy ở chế độ nền (sau khi đã chuyển sang chế độ khác).
    • Có thể tạo trực tiếp thông qua giao diện người dùng.
    • Có dữ liệu ứng dụng riêng biệt nhưng chia sẻ một số chế độ cài đặt trên toàn hệ thống. Ví dụ: Wi-Fi và Bluetooth.

Chú ý

Các trường hợp ngoại lệ sau đây áp dụng cho người dùng hệ thống không có giao diện người dùng và Người dùng thông thường (phụ) trong ngành Ô tô:

  • Người dùng hệ thống không có giao diện người dùng không hỗ trợ hồ sơ công việc.
  • Theo mặc định, người dùng thông thường (phụ) có toàn quyền truy cập vào cuộc gọi điện thoại và tin nhắn.
  • Theo mặc định, người dùng thông thường (phụ) không chạy ở chế độ nền.

Bật người dùng hệ thống không có giao diện người dùng

Kể từ Android 10, tính năng nhiều người dùng có thể được dùng cho các trường hợp sử dụng trong ô tô. Sau đây là một số điểm khác biệt quan trọng:

  • Người dùng hệ thống không có giao diện người dùng và chỉ chạy ở chế độ nền.
  • Người dùng không tương tác với người dùng hệ thống.

Để bật người dùng hệ thống không có giao diện người dùng, nhà sản xuất thiết bị phải bật chế độ nhiều người dùng như mô tả ở trên.

Khi người dùng không có giao diện người dùng được bật:
  1. Để khai báo thiết bị là Automotive, hãy thêm tính năng android.hardware.type.automotive.
  2. Đặt ro.fw.headless_system_user thành true.
  3. Đặt giá trị cho config_multiuserMaximumUsers thành 2 (hoặc cao hơn).

Để biết thêm thông tin, hãy xem phần Hỗ trợ nhiều người dùng trong Automotive.

Android Automotive hỗ trợ nhiều người dùng trên nhiều màn hình

Android 15 cho phép người dùng phụ toàn quyền (không phải người dùng trên nền trước hiện tại) khởi chạy các hoạt động và truy cập vào giao diện người dùng trên màn hình được chỉ định cho họ. Tính năng này cho phép nhiều người dùng đồng thời trong Android Automotive OS hỗ trợ trải nghiệm trên ô tô, cung cấp cho nhiều hành khách trải nghiệm giao diện người dùng chuyên biệt trong một phiên bản Android.

Để bật tính năng này, nhà sản xuất thiết bị phải xác định một lớp phủ tài nguyên để thay thế giá trị sau trong frameworks/base/core/res/res/values/config.xml:

<!-- Whether the device allows full users to start in background visible on displays.
Should be false for most devices, except automotive vehicle with passenger displays.
Note: this flag does NOT control the Communal Profile, which is not a full user. -->

<bool name="config_multiuserVisibleBackgroundUsers">false></bool>

Bạn có thể thử nghiệm trải nghiệm chỉ dành cho hành khách (không có người lái xe) bằng cách bật cấu hình bổ sung sau:

<!-- Whether the device allows users to start in background visible on the default display.
    Should be false for all devices in production. Can be enabled only for development use
    in passenger-only automotive build (i.e., when Android runs in a separate system in the
    back seat to manage the passenger displays).
    When set to true, config_multiuserVisibleBackgroundUsers must also be true. -->

<bool name="config_multiuserVisibleBackgroundUsersOnDefaultDisplay">false</bool>

Trong Android 15, bạn cũng có thể bật trải nghiệm trên ô tô cho nhiều người ngồi trên xe dưới dạng người dùng khách. Để cho phép nhiều người dùng khách sử dụng cho mục đích phát triển, nhà sản xuất thiết bị phải xác định một lớp phủ tài nguyên định cấu hình số lượng người dùng khách tối đa được phép trong frameworks/base/core/res/res/xml/config_user_types.xml, chẳng hạn như trong ví dụ sau:

<user-types>
   <full-type
       name="android.os.usertype.full.GUEST"
       max-allowed='4'>
       <default-restrictions no_factory_reset="true"
           no_remove_user="true"
           no_modify_accounts="true"
           no_install_apps="true"
           no_install_unknown_sources="true"
           no_uninstall_apps="true"/>
   </full-type>
</user-types>