支援多位使用者

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

術語

Android 會使用下列詞彙來說明 Android 使用者和帳戶。

一般

Android 裝置管理服務使用下列一般術語:

  • 使用者:每個使用者都應由不同的 人物。每位使用者都有不同的應用程式資料和部分專屬設定,例如 以及使用者介面明確切換使用者使用者可以在 也能在背景執行是由系統管理 使用者在適當情況下可節省資源。可以建立次要使用者 方法之一 裝置 管理應用程式。
  • 帳戶:帳戶包含給使用者,但尚未定義 亦非由使用者定義,亦非由任何特定帳戶定義或連結的使用者。使用者與 設定檔包含各自專屬的帳戶,但不一定要擁有 帳戶正常運作。帳戶清單會因使用者而異。詳情請參閱 Account 類別定義。
  • 資料夾:資料夾會分隔應用程式資料,但會共用部分系統層級設定 (例如 Wi-Fi 和藍牙)。設定檔是使用者存在的子集,且與使用者存在狀態相關。使用者可以擁有多個設定檔。系統會透過 Device Administration 應用程式建立設定檔。設定檔一律會與父項使用者建立不可變更的關聯,這由建立設定檔的使用者定義。設定檔不會在建立使用者的生命週期結束後繼續存在。
  • 應用程式:每位相關聯使用者都會擁有應用程式的資料。應用程式資料會與同一位使用者內的其他應用程式隔離。同一位使用者可透過 IPC 相互互動。詳情請參閱「Android for enterprise」。

使用者類別

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 檔案,設定這些使用者類型。這有助於變更每個使用者類型的預設設定,包括預設限制、圖示、徽章和允許的使用者人數上限。

除了可設定的 AOSP 使用者類型,原始設備製造商 (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 付款)

裝置製造商可決定使用者人數上限。如果裝置製造商或其他人修改了設定,則必須確保 SMS 和電話服務能按照 Android 相容性定義說明文件 (CDD) 的定義運作。

管理多位使用者

應用程式會透過程式輔助方式在 DevicePolicyManager 類別中叫用 API 來限制使用,藉此管理使用者和設定檔 (受限制的設定檔除外)。

企業可以使用上述類型,搭配 DevicePolicyManagerUserManager API,運用使用者和設定檔來管理裝置上的應用程式和資料的生命週期和範圍,以便針對其使用情境建立專屬解決方案。

多位使用者系統行為

當使用者加入裝置後,如果其他使用者處於前景,某些功能就會受到限制。由於應用程式資料是按使用者區隔,因此 每個應用程式的狀態都因使用者而異例如收件者為帳戶的電子郵件 目前尚未成為焦點的使用者,必須等到該使用者與帳戶才能使用 有效。

注意:如要為次要使用者啟用或停用電話和簡訊功能,請依序前往「設定」>「使用者」,選取使用者,然後將「允許通話和簡訊」設定切換為關閉。

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

在 Android 裝置上使用多位使用者時,請注意下列行為:

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

Android Automotive 多使用者

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

汽車使用者類型

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

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

注意事項

以下例外狀況適用於 Automotive 中的無頭系統使用者和一般 (次要) 使用者:

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

啟用無頭系統使用者

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

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

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

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

詳情請參閱 Automotive 中的「多使用者支援」。

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

Android 14 的新實驗功能可讓完整的次要使用者 (即「非」目前前景使用者) 啟動活動,並取得指派給他們的螢幕畫面上的 UI 存取權。這項功能可讓您 同時支援 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>