支援多位使用者

Android 透過分割使用者的身分,在單一 Android 裝置上支援多位使用者 帳戶和應用程式資料舉例來說,家長可能會允許子女 家人可以使用家庭平板電腦、家人共用汽車,或是重要的應變團隊 可能會共用行動裝置以便進行通話。

術語

在說明 Android 使用者和帳戶時,Android 會使用下列字詞。

一般

Android 裝置管理服務使用下列一般詞彙:

  • 使用者:每個使用者都應由不同的 人物。每位使用者的應用程式資料與一些獨特設定 以及使用者介面明確切換使用者使用者可以在 也能在背景執行是由系統管理 使用者在適當情況下可節省資源。可以建立次要使用者 方法之一 裝置 管理應用程式。
  • 帳戶:帳戶包含給使用者,但尚未定義 亦非由使用者定義,亦非由任何特定帳戶定義或連結的使用者。使用者與 設定檔包含各自專屬的帳戶,但不一定要擁有 帳戶正常運作。帳戶清單會因使用者而異。詳情 請參閱 帳戶 class 定義。
  • 設定檔:設定檔包含應用程式資料,但會分享部分資料 系統通用的設定 (例如 Wi-Fi 和藍牙)。商家檔案是子集 並連結使用者的存在每位使用者可以擁有多個設定檔。 個人資料是透過 裝置 管理應用程式。設定檔一律具備無法變更的關聯 由建立該設定檔的使用者定義。設定檔不支援 不會超過建立使用者的生命週期
  • 應用程式:應用程式資料存在於每個關聯使用者中。 系統會從同一使用者中的其他應用程式,採用沙箱機制保護應用程式資料。應用程式 相同使用者可以透過處理序間通訊 (IPC) 互動詳情請參閱 給 Android 企業版

使用者類別

Android 裝置管理可使用下列類別的使用者。

  • 系統使用者:第一位使用者新增到裝置。系統使用者 恢復原廠設定後就無法移除,但即使 其他使用者則在前景執行。這位使用者也具備特殊權限 只能調整相關設定
  • 無介面系統使用者:第一位使用者在設定裝置後新增到裝置 以無頭系統使用者模式執行 (透過設定 ro.fw.mu.headless_system_user=true)。 無頭系統使用者一律會在背景執行,因此這類裝置需要額外 前景使用者,讓使用者能與之互動。
  • 次要使用者:任何新增至系統以外裝置的使用者 內容。無論是由自己或管理員移除,次要使用者都可以移除 ),且不會影響裝置上的其他使用者。這些使用者可以在 並在背景中保持網路連線
  • 訪客使用者:臨時次要使用者。訪客使用者有 選項,可在訪客的實用性結束時快速刪除訪客使用者。這裡 一次只能有一位訪客使用者。
  • 管理員使用者:有權建立和移除其他使用者的使用者。 以及控管部分一般的多使用者設定 根據預設,只有系統使用者是管理員。

個人資料類別

Android 會使用以下類別的設定檔:

  • 受管理設定檔:由應用程式建立,用於存放工作資料 和應用程式互動這類帳戶由商家檔案擁有者 (即 已建立公司資料)。啟動器、通知和近期工作如下 由上層使用者和公司資料共用
  • 設有限制的個人資料:使用以家長使用者為主的帳戶,且哪些人可以 控管受限設定檔可使用的應用程式。僅適用於 平板電腦和電視裝置
  • 複製設定檔:Android 支援建立獨立的本機副本設定檔使用者 類型,啟用在裝置上執行單一應用程式的兩個執行個體。Android 開放原始碼計畫未提供 端對端支援。原始設備製造商 (OEM) 需加入自訂項目,提供 Android 使用者
  • 私人設定檔:這是與裝置其餘部分分開的沙箱空間。 可讓您單獨鎖定主要使用者以外的使用者。私人設定檔只能用於 主要使用者。私人設定檔解鎖後,這些應用程式就會在設定中顯示。 ShareSheet、Photopicker 和 DocsUI,應用程式則會在鎖定時隱藏。 私人設定檔和工作資料夾可儲存在同一部裝置上 。

使用者類型

Android 11 將上述的使用者和個人資料分類,定義成明確定義 使用者類型、 代表 Android 多位使用者允許的所有不同類型和設定檔 而不是每個特徵的分數

預先定義的 Android 開放原始碼計畫使用者類型定義於 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
  • android.os.usertype.profile.CLONE
  • android.os.usertype.profile.PRIVATE

原始設備製造商 (OEM) 可將 frameworks/base/core/res/res/xml/config_user_types.xml 檔案。 這樣有助於變更各使用者類型的預設設定。 包括預設限制、圖示、徽章,以及使用者數量上限。

除了可設定的 Android 開放原始碼計畫使用者類型外,原始設備製造商 (OEM) 還可使用 frameworks/base/core/res/res/xml/config_user_types.xml 檔案。 這可讓原始設備製造商 (OEM) 導入自己的非代管設定檔類型 (如有需要)。 不過,原始設備製造商 (OEM) 有責任視需要修改平台,以支援 變更,包括修改任何檢查受管理設定檔的程式碼,以處理新的設定檔 視需要輸入文字

啟用多使用者

多使用者功能預設為停用。目的地: 啟用此功能,裝置製造商必須定義其資源疊加層,以取代 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>

如要在裝置上套用這個疊加畫面並啟用訪客和次要使用者,請使用 要取代的 Android 建構系統的 DEVICE_PACKAGE_OVERLAYS 功能 顯示以下各項目的值:

  • config_multiuserMaximumUsers 值大於 1
  • config_enableMultiUserUI (使用 true 付款)

裝置製造商可決定使用者人數上限。若裝置 製造商或其他人員會修改設定,則必須確保簡訊和 Android 相容性 定義文件 (CDD)。

管理多位使用者

使用者和個人資料管理 (設有限制的個人資料除外) 是以程式輔助的方式叫用 API DevicePolicyManager 類別來限制用途。

企業可以運用使用者和個人資料控管整個生命週期 應用程式、應用程式和裝置上的資料範圍 與 DevicePolicyManagerUserManager API,依據用途打造專屬解決方案。

多使用者系統行為

將使用者新增至裝置時,有些功能會 另一個使用者位於前景由於應用程式資料是按使用者區隔,因此 每個應用程式的狀態都因使用者而異例如收件者為帳戶的電子郵件 目前尚未成為焦點的使用者,必須等到該使用者和帳戶才能使用 有效。

注意:如何啟用或停用電話和簡訊 為次要使用者啟用函式,請依序前往 [設定] >使用者,選取 使用者,並將 [允許通話和簡訊] 設定切換為關閉。

當次要使用者處於背景運作時,該功能存在一些限制。舉例來說: 背景次要使用者無法顯示使用者介面 已啟用藍牙服務。此外,系統程序會暫停背景 如果裝置需要額外記憶體來執行 前景使用者。

透過 Android 裝置使用多位使用者時,請注意下列事項 以下幾點

  • 系統會一次顯示單一使用者所有帳戶的通知。
  • 其他使用者的通知要等到啟用後才會顯示。
  • 每位使用者可獲得一個用來安裝及放置應用程式的工作區。
  • 所有使用者的應用程式資料皆無法存取。
  • 任何使用者都能影響所有使用者已安裝的應用程式。
  • 管理員使用者可以移除應用程式,甚至是建立的所有工作區 不受次要使用者影響
  • 根據預設,離開訪客模式時,訪客使用者工作階段的資訊不會保留。 如要保留訪客使用者工作階段中的資訊,您必須建立資源 可將 config_guestUserAllowEphemeralStateChange 設為 false。如要進一步瞭解如何建立重疊檔案,請參閱 使用資源重疊自訂建構

Android Automotive 多使用者

Android Automotive 仰賴 Android 的多使用者實作功能來提供共用裝置 無須專人管理

汽車使用者類型

除了上述使用者類型外, Automotive 版本也不適用於這些類型 的使用者:

  • 無介面系統使用者。系統使用者會代管所有系統服務。 如要在 Automotive 上支援多位使用者,系統使用者也必須為無頭。 只有一個無頭使用者。無頭系統使用者:
    • 必須一律在背景執行。
    • 無法移除或由使用者直接存取,除非是「裝置」 佈建中。舉例來說,使用者無法切換至這個使用者類型來執行下列工作: 下載應用程式或新增帳戶。
    • 必須恢復原廠設定才能清除。
  • 一般使用者:次要使用者 (上述「次要使用者」除外) 使用者:
    • 不要在背景執行 (離開後)。
    • 可透過使用者介面直接建立。
    • 應用程式資料有所區隔,但採用某些系統通用的設定。例如 Wi-Fi 藍牙。

注意事項

以下例外狀況適用於無頭系統使用者和一般 (次要) 使用者 汽車業:

  • 無頭系統使用者不支援工作資料夾。
  • 根據預設,一般 (次要) 使用者俱備通話和簡訊的完整權限,
  • 根據預設,一般 (次要) 使用者不會在背景執行,

啟用無頭系統使用者

自 Android 10 起,「多使用者」功能可用於汽車用途。重要事項 兩者的差異包括:

  • 系統使用者是無頭介面,且只會在背景執行。
  • 真人使用者不會與系統使用者互動。

如要啟用無頭系統使用者,裝置製造商必須按照所述方式啟用多使用者 。

啟用無頭使用者時:
  1. 如要將裝置宣告為 Automotive,請新增這項功能 android.hardware.type.automotive
  2. ro.fw.headless_system_user 設為 true
  3. config_multiuserMaximumUsers 的值設為 2 (或更高層級)。

若需更多資訊,請參閲 多使用者支援

在多個螢幕上使用 Android Automotive 多使用者功能

Android 14 的全新實驗功能允許完整的次要使用者 (他們「並非」目前的前景使用者) 啟動活動,然後 在螢幕上指派使用者介面的存取權。這項功能可讓您 同時支援 Android Automotive OS 的並行使用者,支援提供多項功能的車內體驗 在單一 Android 執行個體中,有專屬 UI 體驗的乘客。

如要讓這項功能用於開發用途,裝置製造商必須定義資源重疊元素 替換掉 frameworks/base/core/res/res/values/config.xml:

<!-- Whether the device allows users to start in background visible on displays.
    Should be false for all devices in production. Can be enabled only for development use
    in automotive vehicles with passenger displays. -->

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

如要體驗僅限乘客 (無駕駛) 的體驗,請啟用下列功能 其他設定:

<!-- 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>

在 Android 14 中,你可以啟用多款車內體驗 乘客。如要讓多位訪客使用者參與開發工作,請採用裝置 製造商必須定義資源重疊,用於設定允許的房客人數上限 「frameworks/base/core/res/res/xml/config_user_types.xml」中的使用者 (例如 範例如下:

<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>