支持多用戶

Android 通過將用戶帳戶和應用程序數據分開來支持單個 Android 設備上的多個用戶。例如,父母可能允許他們的孩子使用家庭平板電腦,一個家庭可以共享一輛汽車,或者關鍵響應團隊可能共享一個移動設備以進行值班。

術語

Android 在描述 Android 用戶和帳戶時使用以下術語。

一般的

Android 設備管理使用以下通用術語。

  • 用戶。每個用戶意在由不同的物理人使用。每個用戶都有不同的應用程序數據和一些獨特的設置,以及用於在用戶之間明確切換的用戶界面。當另一個用戶處於活動狀態時,一個用戶可以在後台運行;系統會在適當的時候管理關閉用戶以節省資源。次要用戶可以經由用戶接口或從直接創建設備管理應用。
  • 帳戶。帳戶包含在用戶中,但不由用戶定義,用戶也不由任何給定帳戶定義或鏈接到任何給定帳戶。用戶和配置文件包含他們自己的唯一帳戶,但不需要帳戶即可正常運行。帳戶列表因用戶而異。有關詳細信息,請參閱Account類的定義。
  • 簡介。配置文件具有分離的應用程序數據,但共享一些系統範圍的設置(例如,Wi-Fi 和藍牙)。個人資料是用戶存在的子集,並與用戶的存在相關聯。一個用戶可以有多個配置文件。配置文件是通過建立設備管理應用程序。配置文件始終與由創建配置文件的用戶定義的父用戶具有不可變的關聯。配置文件在創建用戶的生命週期後不存在。
  • 應用。應用程序的數據存在於每個相關聯的用戶中。應用程序數據與同一用戶內的其他應用程序進行沙盒處理。同一用戶內的應用程序可以通過 IPC 相互交互。有關詳細信息,請參閱Android的企業

用戶類別

Android 設備管理使用以下類別的用戶。

  • 系統用戶。添加到設備的第一個用戶。除非通過恢復出廠設置,否則係統用戶無法刪除,並且即使其他用戶在前台,系統用戶也始終在運行。該用戶還具有隻有它才能設置的特殊權限和設置。
  • 二級用戶。添加到設備的除系統用戶之外的任何用戶。可以刪除次要用戶(由他們自己或由管理員用戶),並且不會影響設備上的其他用戶。這些用戶可以在後台運行並繼續保持網絡連接。
  • Guest用戶。臨時二級用戶。訪客用戶有一個明確的選項,可以在訪客用戶用完後快速刪除它。一次只能有一個訪客用戶。
  • 管理員用戶。有權創建和刪除其他用戶以及控制一些常規多用戶設置的用戶。默認情況下,只有系統用戶是管理員。

配置文件的類別

Android 設備管理使用以下類別的配置文件。

  • 管理配置文件。由應用程序創建以包含工作數據和應用程序。它們由個人資料所有者(創建公司個人資料的應用程序)專門管理。啟動器、通知和最近的任務由父用戶和公司配置文件共享。
  • 受限個人資料。使用基於父用戶的帳戶,他們可以控制受限制的配置文件中可用的應用程序。僅適用於平板電腦和電視設備。

用戶類型

機器人11已制定用戶和型材的上述分類成定義良好的用戶類型,佔所有被Android多用戶特徵允許不同類型的用戶和型材。

預先定義的用戶AOSP類型定義在frameworks/base/core/java/android/os/UserManager.java和目前包括:

  • 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

原始設備製造商必須通過重疊來配置這些用戶類型的能力frameworks/base/core/res/res/xml/config_user_types.xml文件。這有助於更改每個用戶類型的默認配置,包括其默認限制、圖標、徽章和允許的最大用戶數。

除了配置AOSP用戶類型,原始設備製造商可以定義使用新的簡檔類型frameworks/base/core/res/res/xml/config_user_types.xml文件。這允許 OEM 在需要時引入他們自己的非託管配置文件類型。但是,OEM 有責任根據需要進行平台修改以支持更改,包括修改任何檢查託管配置文件的代碼,以便在適當的情況下處理新的配置文件類型。

啟用多用戶

從 Android 5.0 開始,默認情況下禁用多用戶功能。要啟用該功能,設備製造商必須定義替換以下值的資源覆蓋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>

若要將此疊加,使來賓和二次用戶的設備上,使用DEVICE_PACKAGE_OVERLAYS Android編譯系統的功能來替換值:

  • config_multiuserMaximumUsers具有值大於1
  • config_enableMultiUserUItrue

設備製造商可以決定最大用戶數。如果設備製造商或其他人修改的設置,他們必須確保在規定的短信和電話的工作Android的兼容性定義文件(CDD)。

管理多個用戶

用戶和簡檔(具有受限制的輪廓除外)的管理是由編程方式調用在API的應用程序執行DevicePolicyManager類來限制使用。

學校和企業可以使用用戶和個人資料來管理設備上的應用程序和數據的生命週期和範圍,使用上面結合概述與類型的UserManager API打造適合他們的使用情況獨特的解決方案。

多用戶系統行為

當用戶被添加到設備時,當另一個用戶在前台時,某些功能會被縮減。由於應用程序數據按用戶分開,因此這些應用程序的狀態因用戶而異。例如,在該用戶和帳戶在設備上處於活動狀態之前,發往當前未關注的用戶帳戶的電子郵件將不可用。

默認情況下,只有系統用戶才能完全訪問電話和短信。次要用戶可以接聽來電,但不能收發短信。管理員用戶必須為其他人啟用這些功能。

:要啟用或禁用的電話和短信功能的輔助用戶,進入設置>用戶,選擇用戶,並切換允許手機通話和短信設置為關閉。

當次要用戶在後台時存在一些限制。例如,後台次要用戶無法顯示用戶界面或激活藍牙服務。此外,如果設備需要額外的內存用於前台用戶的操作,系統進程將暫停後台二級用戶。

在 Android 設備上僱用多個用戶時,請記住以下行為:

  • 一次為單個用戶的所有帳戶顯示通知。
  • 其他用戶的通知在激活之前不會出現。
  • 每個用戶都有一個工作區來安裝和放置應用程序。
  • 任何用戶都無權訪問其他用戶的應用數據。
  • 任何用戶都可以影響所有用戶安裝的應用程序。
  • 管理員用戶可以刪除應用程序,甚至是次要用戶建立的整個工作區。

Android 7.0 包括多項增強功能,包括:

  • 切換工作資料。用戶可以禁用他們的託管配置文件(例如在不工作時)。這個功能是通過停止用戶來實現的; UserManagerService呼籲ActivityManagerNative#stopUser()
  • 始終開啟的VPN。 VPN 應用程序現在可以由用戶、設備 DPC 或託管配置文件 DPC 設置為始終開啟(僅適用於託管配置文件應用程序)。啟用後,應用程序無法訪問公共網絡(在 VPN 連接並且連接可以通過它路由之前停止訪問網絡資源)。設備該報告device_admin必須實現永遠在線的VPN。

對於在Android 7.0設備管理功能的詳細信息,請參閱Android for Work的

Android汽車多用戶

Android Automotive 依靠 Android 的多用戶實現來提供共享的設備體驗。

汽車用戶類型

除了上面列出的用戶類型之外,Automotive 版本還針對以下類型的用戶而著稱:

  • 無頭系統用戶。系統用戶託管所有系統服務。為了支持汽車多用戶,系統用戶還必須是無頭。只有一個無頭用戶。無頭系統用戶:
    • 必須始終在後台運行。
    • 不能由用戶直接刪除或訪問,除非是在設備配置的情況下。例如,用戶無法切換到此用戶類型來執行下載應用程序或添加帳戶等任務。
    • 只能通過恢復出廠設置清除。
  • 普通用戶。相同次要用戶,如上所述,不同之處在於次要用戶:
    • 不要在後台運行(在被關閉之後)。
    • 可以直接通過用戶界面創建。
    • 已分離應用程序數據但共享一些系統範圍的設置。例如,Wi-Fi 和藍牙。

注意事項

以下例外適用於汽車中的無頭系統用戶和普通(次要)用戶:

  • 無頭系統用戶不支持工作配置文件。
  • 默認情況下,普通(次要)用戶可以完全訪問電話和短信。
  • 默認情況下,普通(次要)用戶不在後台運行。

啟用無頭系統用戶

從 Android 10 開始,多用戶功能可用於汽車用例。重要的區別包括:

  • 系統用戶是無頭的,只在後台運行。
  • 人類用戶不與系統用戶交互。

要啟用無頭系統用戶,設備製造商必須啟用如上所述的多用戶。

啟用無頭用戶時:
  1. 申報裝置是汽車,添加該功能android.hardware.type.automotive
  2. 設置ro.fw.headless_system_usertrue
  3. 設定為值config_multiuserMaximumUsers2 (或更高)。

欲了解更多信息,請參見多用戶支持的汽車。