佈建裝置

佈建裝置的方法有很多種。客戶的業務需求會決定您要使用的佈建方法。

裝置佈建基本概念

客戶想支援的裝置佈建部署情境 (例如自攜裝置或公司擁有) 會決定您要使用的作業模式 (例如裝置擁有者模式或設定檔擁有者模式)。同樣地,您需要支援所需的作業模式和 Android 版本,以決定要實作的佈建方法。

部署情境

在「公司擁有」的部署情境中,企業擁有並完整控制其員工使用的裝置。一般來說,當機構需要嚴格監控及管理整部裝置時,就要部署公司擁有的裝置。

如果公司支援「自攜裝置」部署情境,員工就能讓個人裝置工作,以及使用這些裝置存取具有特殊權限的公司資訊和應用程式。

作業模式

裝置擁有者作業模式支援公司擁有的部署作業。在 Android 中,管理應用程式稱為裝置政策控制器 (DPC)。DPC 會在 Android 裝置上強制執行政策,當裝置擁有者的身分為裝置擁有者時,就會管理整個裝置。身為裝置擁有者,DPC 可以執行裝置通用的動作,例如設定裝置通用的連線、調整全域設定,以及恢復原廠設定。

設定檔擁有者作業模式支援自攜裝置部署。企業可透過 DPC,將工作資料夾新增至裝置上主要使用者帳戶,藉此啟用個人裝置工作。工作資料夾與主要使用者相關聯,但可做為獨立的設定檔。以設定檔擁有者的身分,DPC 只會管理裝置上的工作資料夾,在工作資料夾外有有限的控制權。

裝置擁有者佈建方法

您必須在新裝置的初始設定或恢復原廠設定後佈建裝置擁有者模式。在任何時候,您都無法再在裝置上佈建裝置擁有者模式。

視用途而定,佈建裝置擁有者模式主要有 2 種佈建方法。

  • 在「裝置導向」流程中,IT 管理員可以使用 NFC 佈建大量裝置。這個流程可用於 Google Play 管理版帳戶或 Google Workspace 情境。
  • 在「使用者導向」流程中,這些選項取決於機構是否使用 Google Workspace。
    • 在 Google Workspace 情境中,使用者會在初始裝置設定期間新增 Google 帳戶,DPC 必須引導使用者完成設定裝置擁有者的步驟。使用者導向流程可協助使用者設定新裝置,也可在裝置不支援 NFC 時選用。
    • 如果機構未使用 Google Workspace,您應使用 Google Play 管理版帳戶方法。

注意:如果您將應用程式限定在 Play 的特定國家/地區發行,在裝置擁有者佈建作業時,系統就會忽略這些限制。即使裝置不在指定國家/地區,系統仍會下載 DPC。

設定檔擁有者佈建方法

佈建設定檔擁有者模式作業的建議方法,取決於機構是否使用 Google Workspace。

  • 在 Google Workspace 案例中,建議採用使用者導向的流程 (也就是使用者新增使用者 Google 帳戶),而 DPC 會引導使用者按照步驟設定設定檔擁有者。
  • 如果機構未使用 Google Workspace,建議採用 Google Play 管理版帳戶方法。

系統也支援使用者手動安裝 DPC 的傳統方法。使用者必須從 Google Play 下載並安裝 DPC,接著 DPC 會引導使用者完成其餘步驟設定設定檔擁有者。

不同 Android 版本之間的金鑰佈建差異

部署情境 作業模式 佈建方法 5.0、5.1 6.0 以上版本 7.0 以上版本
由公司擁有 裝置擁有者 QR 圖碼
Google Play 管理版帳戶
Google 帳戶
NFC
自攜裝置 設定檔擁有者 Google Play 管理版帳戶
Google 帳戶 5.11
手動安裝裝置政策控制器 (DPC)

一般導入註意事項

無論實作何種作業模式,在編寫 DPC 時須考量以下幾點。

Google Play 服務相容性

Google Play 服務 APK 指南會指示開發人員在執行 API 交易之前,執行 Google Play 服務的版本檢查。由於嘗試更新 Google Play 服務會導致裝置設定程序發生嚴重中斷,因此 DPC 不得在裝置佈建作業完成前嘗試更新 Google Play 服務。

與 Google Play 服務之間的 DPC 相容性相關重點為:

  • DPC 應使用隨附於特定裝置隨附的 Google Play 服務執行。
  • DPC 不應依賴日後佈建裝置時未來可用的 Google Play 服務新功能。

裝置佈建完成後,DPC 可提示使用者更新 Google Play 服務,讓 DPC 能夠使用最新功能。但是,如果某項功能因故無法使用,DPC 必須優雅地改回使用裝置隨附的版本。

擷取裝置詳細資料

由於傳播延遲,呼叫 devices.get 最多可能需要 2 分鐘,才能傳回裝置的詳細資料。

如果您的工作流程需要詳細資料,使用者才能使用裝置或工作資料夾,建議您在 DPC 中使用進度畫面,然後等待呼叫成功。

設定檔擁有者模式的實作注意事項

編寫 DPC 來實作設定檔擁有者作業模式時,請注意以下幾點。

移除或停用個人 DPC

佈建設定檔擁有者模式的作業模式時,DPC 會開始在個人資料夾中執行,並啟動建立工作資料夾的程序。建立工作資料夾後,DPC 也會在工作資料夾中執行。工作資料夾中的 DPC 會完成佈建程序。屆時,個人設定檔中的 DPC 應自行停用,或裝置使用者應將其移除。

使用者移除個人 DPC

  1. 個人 DPC 會監聽 ACTION_MANAGED_PROFILE_PROVISIONED。(如果是 Android 5.1 裝置,個人 DPC 應改為監聽 ACTION_MANAGED_PROFILE_ADDED)。
  2. 個人 DPC 會啟動解除安裝要求 ACTION_UNINSTALL_PACKAGE。這會提示使用者解除安裝個人 DPC。為提供最佳使用者體驗,解除安裝程序應在佈建流程期間執行。

個人 DPC 自行停用

  1. 個人 DPC 會監聽 ACTION_MANAGED_PROFILE_PROVISIONED。(如果是 Android 5.1 裝置,個人 DPC 應改為監聽 ACTION_MANAGED_PROFILE_ADDED)。
  2. 在適用情況下,個人 DPC 應先撤銷裝置管理員權限,再自行停用。
  3. 個人 DPC 會使用 COMPONENT_ENABLED_STATE_DISABLED 參數啟動 setApplicationEnabledSetting 停用要求。
  4. 使用者可以從 Google Play 重新啟用個人 DPC。

裝置擁有者模式的實作注意事項

編寫 DPC 來實作裝置擁有者作業模式時,請注意以下幾點。

裝置必須為新裝置或恢復原廠設定

您必須在新裝置的初始設定或恢復原廠設定後佈建裝置擁有者模式。您無法在裝置中隨時佈建裝置擁有者模式。

裝置擁有者模式可讓 DPC 完全控管裝置。如果在初始設定「之後」允許佈建裝置擁有者模式:

  • 惡意軟體可能會建立裝置擁有者並接管裝置。
  • 如果裝置上已有使用者資料或應用程式,則可能導致隱私權問題。

只在公司擁有的裝置上設定裝置擁有者模式

請務必僅在您認定為客戶公司擁有的裝置上佈建裝置擁有者模式。如要進行確認,您可以偵測一組專屬裝置 ID (例如序號),或使用可透過 EMM 政策授予裝置註冊的一組專屬帳戶。

如果無法驗證裝置的公司擁有權,就必須建立不安全的機制,以免裝置擁有者模式誤佈建。舉例來說,您可以在佈建裝置擁有者模式之前,提示裝置使用者確認或採取一些確認動作。

啟用系統應用程式

當 DPC 佈建工作資料夾時,系統會假設所有不含啟動器圖示的系統應用程式對裝置至關重要,並且自動允許在工作資料夾中執行。系統會將具有啟動器圖示的系統應用程式視為選用應用程式,您可以決定是否要啟用。

透過 Google Play 啟用系統應用程式

使用 Google Play 啟用系統應用程式非常簡單,只要有應用程式更新可用,使用者就能取得更新。

使用 Android 架構 API 啟用系統應用程式

如果您想讓使用者在開始使用裝置後立即看到系統應用程式,請在裝置佈建程序中啟用系統應用程式。DPC 可依套件名稱或 DevicePolicyManager.enableSystemApp() 意圖啟用系統應用程式。

您可以透過以下幾種方式找出要啟用的系統應用程式,並在 EMM 控制台中提供給 IT 管理員。

建立系統應用程式目錄

使用這個方法時,每部裝置都會判斷裝置上的應用程式,並將這項資料傳回 EMM 控制台。EMM 控制台會在建立裝置政策時動態顯示這類資料,讓 IT 管理員針對個別應用程式管理應用程式。

  1. 如果裝置尚未佈建工作資料夾,請使用 queryIntentActivities() 提取裝置上含有啟動器圖示的所有應用程式清單:

    private List<ResolveInfo> getAppsWithLauncher() {
      Intent i = new Intent(Intent.ACTION_MAIN);
      i.addCategory(Intent.CATEGORY_LAUNCHER);
      return getPackageManager().queryIntentActivities(i, 0);
    }
    
  2. 如果裝置上已佈建工作資料夾,請使用 PackageManager.GET_DISABLED_COMPONENTSPackageManager.GET_UNINSTALLED_PACKAGES 提取工作資料夾中所有應用程式的清單。

  3. 檢查 FLAG_SYSTEM (指出應用程式是否已安裝在裝置的系統映像檔中),即可在應用程式清單中找到系統應用程式。

優點:

  • 讓 IT 管理員全面瞭解所有裝置的應用程式。
  • 可讓您精確控管要啟用的應用程式。

缺點:

  • 由於每部裝置的應用程式目錄都不同,因此很難將單一政策設定模型套用至多個裝置類型。
  • 以對 IT 管理員有意義的方式呈現原始設備製造商 (OEM) 專用的應用程式數量並不容易。

依功能分類系統應用程式

當 IT 管理員想要為一組裝置啟用系統應用程式時,他們會根據功能 (例如「系統瀏覽器」) 選取一般應用程式。接著,DPC 會允許所有系統應用程式取得該意圖。

優點:

  • 為 IT 管理員啟用簡單且以功能為基礎的啟用方式。
  • 確保在各種裝置上都能提供一致的功能 (至少對常見用途而言至少)。

缺點:

  • 限制系統應用程式僅限所有裝置類型支援的應用程式。
  • IT 管理員可能會想推送應用程式的 OEM 版本 (例如 Samsung® 瀏覽器),但不能推送其他應用程式版本 (例如 LG® 瀏覽器)。
  • IT 管理員可能不想推送多個應用程式,但如果有多個意圖處理常式,就無法推送多個應用程式。

僅支援核准的系統應用程式

您將與原始設備製造商 (OEM) 合作辨識特定 OEM 套件,並只在 EMM 控制台中支援這些套件。這麼做也可以將 OEM 應用程式的受管理設定編入目錄,因為原始設備製造商 (OEM) 應用程式不代管在 Google Play 上,您根本無法得知這項設定。

優點:

  • 大幅簡化整合工作流程,並消除前兩個選項中有問題的極端案例。
  • 您可以分類 OEM 應用程式的受管理設定,並在 EMM 控制台中向 IT 管理員顯示這些設定。
  • 支援與原始設備製造商 (OEM) 建立密切的關係,支援旗艦裝置。

缺點:

  • 擴充性較低,可減少消費者的選擇。

針對 DPC 的測試情境

Test DPC 是 Google 提供的開放原始碼應用程式,可用於測試 DPC 應用程式中的企業功能。您可以透過 githubGoogle Play 取得 Test DPC。您可以使用測試 DPC:

  • 在 Android 中模擬功能
  • 設定並強制執行政策
  • 設定應用程式和意圖限制
  • 設定工作資料夾
  • 設定全代管的 Android 裝置

雖然測試 DPC 主要用於測試 Android 企業解決方案,但也可以做為 Android 功能的程式碼範例來源。

自訂佈建

在裝置佈建期間,系統使用者介面會在狀態列中顯示預設顏色,並在畫面頂端顯示預設標誌。建議您設定自訂顏色和標誌,以便在 DPC 和系統介面之間保持一致,或允許管理員使用 EMM 控制台進行這項操作。例如,管理員可上傳公司標誌或自訂顯示通知的畫面外觀。

DPC 使用 DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLORDevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI 額外項目,強制執行顏色和標誌選項。

如要設定自訂顏色,請使用 EXTRA_PROVISIONING_MAIN_COLOR 設定整數,以便在裝置佈建期間指出要顯示的主要顏色。使用 ACTION_PROVISION_MANAGED_PROFILEACTION_PROVISION_MANAGED_DEVICE 將額外 (常數) 放入意圖中。

如要查看整數的表示方式,請參閱顏色一節。範例請參閱 TestDPC 應用程式中的 MAIN_COLOR

如要設定自訂標誌,請使用 EXTRA_PROVISIONING_LOGO_URI 設定在裝置佈建期間顯示在畫面頂端的圖片。使用 ACTION_PROVISION_MANAGED_PROFILEACTION_PROVISION_MANAGED_DEVICE 將額外 (常數) 放入意圖中。確認圖片對裝置而言有合理的像素密度。

範例請參閱 TestDPC 應用程式中的 LOGO_URI

QR code 方法

QR code 佈建方法可透過設定精靈掃描 QR code,藉此設定及設定裝置擁有者模式。QR code 包含鍵/值組合的酬載,以及 DPC 佈建裝置所需的所有資訊。

IT 管理員應可在 EMM 控制台中,為要佈建的裝置建立 QR code。IT 管理員會將 QR code 傳送給使用者,而使用者只要掃描 QR code 佈建裝置,

QR code 佈建用途

部分裝置 (例如平板電腦) 不支援 NFC。QR code 佈建是佈建不支援 NFC 的分散式裝置機群,十分方便。IT 管理員可以將 QR code 傳送給使用者,允許由使用者進行佈建。

QR code 佈建不需要 Google 身分,例如 Google 網域或 Google 帳戶。使用 Android 但未使用 Google Workspace 的機構則沒有 Google 身分,

與 NFC 一樣,QR code 佈建功能會啟用資訊站和單次使用部署功能,這樣在不需要或不需要 Google 身分時,就能派上用場。舉例來說,商店中的資訊站裝置不屬於任何人,且不應擁有使用者的身分。

建立 QR code

用於佈建 QR code 的有效 QR code 是採用 UTF-8 編碼的 JavaScript® 物件標記 (JSON) 字串。您可在有效的 QR code 中加入下列屬性:

一律必要

如果裝置上未安裝 DPC,則為必要選項

如果裝置未連上 Wi-Fi,建議採用這個做法

選用

以下範例會建立有效的 QR code:

{
"android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME":
"com.emm.android/com.emm.android.DeviceAdminReceiver",

"android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM":
"gJD2YwtOiWJHkSMkkIfLRlj-quNqG1fb6v100QmzM9w=",

"android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION":
"https://path.to/dpc.apk",
    "android.app.extra.PROVISIONING_SKIP_ENCRYPTION": false,
    "android.app.extra.PROVISIONING_WIFI_SSID": "GuestNetwork",
    "android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE": {
        "dpc_company_name": "Acme Inc.",
        "emm_server_url": "https://server.emm.biz:8787",
        "another_custom_dpc_key": "dpc_custom_value"
    }
}

QR code 佈建程序

  1. 設定精靈會提示使用者輕觸歡迎畫面 6 次。輕觸動作必須在螢幕上的同一個位置進行。
  2. 設定精靈會提示使用者連上網際網路,以便設定精靈下載 QR code 讀取器。
  3. Google Play 服務會下載包含 QR code 辨識引擎的模組。
  4. 使用者掃描 IT 管理員提供的 QR code。
  5. 設定精靈會下載 DPC 應用程式,並使用 ACTION_PROVISION_MANAGED_DEVICE 啟動裝置擁有者佈建程序。

Google Play 管理版帳戶方法

DPC 可以使用 Google Play 管理版帳戶佈建方法,設定裝置擁有者模式或設定檔擁有者模式。這種佈建方法適用於未使用 Google Workspace 的機構。

Google Play 管理版帳戶佈建方法使用 DPC 支援資料庫。這個用戶端程式庫可確保 Google Play 管理版帳戶順利運作。還能確保與日後更新 Google Play 管理版帳戶佈建程序的相容性。

佈建裝置的事前準備

  • 系統會根據「建立及註冊企業」一文的說明,使用 EMM 身分建立及註冊企業 ID,並設定 ESA。
  • 您的 EMM 控制台會知道使用者的公司身分。
  • 使用者可以使用 EMM 控制台接受的憑證 (通常是公司電子郵件憑證) 登入 DPC 應用程式。

設定商家檔案擁有者模式

您可以在處於自攜裝置 (BYOD) 情境中運作的裝置上佈建設定檔擁有者模式。

  1. 使用者從 Google Play 手動下載並啟動 DPC。
  2. DPC 使用 ACTION_PROVISION_MANAGED_PROFILE 佈建工作資料夾。
  3. 完成最終設定步驟

設定裝置擁有者模式

您必須在新裝置的初始設定期間或恢復原廠設定後佈建裝置擁有者模式的作業模式。在任何時間,您都無法再在裝置上佈建裝置擁有者模式。

在裝置設定期間,系統會在系統提示使用者新增帳戶時,輸入 DPC 專屬權杖。權杖的格式為 afw#DPC_IDENTIFIER。對於名為 ACME 的 EMM,afw#acme 會安裝 ACME EMM 的預設 DPC。 每個 EMM 都必須向 Google 要求特定 DPC ID,才能在佈建程序中使用。

  1. 使用者開啟新裝置或恢復原廠設定的裝置,並啟動設定精靈。
  2. 系統提示您新增帳戶時,使用者會以 afw#DPC_IDENTIFIER 格式輸入特殊權杖,以便識別 EMM 的 DPC。
  3. 設定精靈會使用權杖中的 DPC ID,在裝置上新增臨時 Google 帳戶。這個臨時帳戶只會用於從 Google Play 下載 EMM 的 DPC,並且在最終設定步驟中移除。
  4. DPC 使用 ACTION_PROVISION_MANAGED_DEVICE 佈建裝置。
  5. 完成最終設定步驟

所有作業模式的最終設定步驟

請先在設定設定檔擁有者模式或裝置擁有者模式的初始步驟完成「之後」再執行下列步驟。

  1. DPC 藉由初始化 DPC 支援資料庫,確保裝置能夠支援 Google Play 管理版帳戶:

    AndroidForWorkAccountSupport androidForWorkAccountSupport =
      new AndroidForWorkAccountSupport(context, admin);
    androidForWorkAccountSupport.ensureWorkingEnvironment(callback);
    

    如果您要在裝置上設定裝置擁有者模式,這個步驟會移除下載 DPC 的臨時 Google 帳戶。

  2. 使用者使用自己的 EMM 憑證登入 DPC。這類憑證通常為公司電子郵件憑證。

  3. DPC 會從 EMM 控制台為已驗證的公司使用者要求 Google Play 管理版帳戶憑證。

  4. 如果 EMM 控制台沒有使用者的 Google Play userId,則會呼叫 Users.insert() 並建立新的使用者。如果您要佈建裝置擁有者模式,請指定裝置帳戶 (用於專屬裝置部署作業) 或使用者帳戶 (用於公司擁有的部署作業)。

  5. 呼叫 Devices.update 來設定裝置政策。您應該先設定這項政策,然後再將受管理的 Google Play 帳戶新增至裝置,否則在裝置中新增帳戶後,短時間內不會套用這項政策。

  6. EMM 控制台會呼叫 Users.generateAuthenticationToken() 要求 userId 的帳戶憑證。這個驗證權杖效期有限,無法重複使用。DPC 應使用該權杖透過程式輔助方式新增帳戶 (使用者不會使用該權杖)。

  7. Google Play EMM API 會將驗證權杖傳回 EMM 控制台。

  8. EMM 控制台會將驗證權杖轉送至 DPC。

  9. DPC 使用

    androidForWorkAccountSupport.addAndroidForWorkAccount(token,
      accountAddedCallback);
    

Google 帳戶方法

DPC 可以使用 Google 帳戶佈建方法,設定裝置擁有者模式或設定檔擁有者模式。使用 Google 帳戶佈建方法時,DPC 會在使用者在初始裝置設定期間新增 Google 帳戶之後,引導使用者完成佈建步驟。

當使用者輸入自己的 Google 帳戶憑證時:

  • Google 驗證伺服器會驗證使用者帳戶。
  • 接著驗證伺服器會與企業伺服器通訊,確認帳戶的網域是否已註冊為 Google Workspace 網域或 EMM 代管網域。
  • 如果是的話,系統會自動從 Google Play 下載與該網域相關聯的 DPC,並安裝應用程式。

設定商家檔案擁有者模式

您可以在裝置初始設定期間或使用者新增帳戶時,依序點選「設定」>「新增帳戶」,佈建設定檔擁有者模式的作業模式。

  1. 帳戶驗證作業是由使用者在設定精靈中啟動,或依序前往「設定」>「新增帳戶」進行。
  2. GMSCore 會使用 ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE 啟動工作資料夾佈建作業。
  3. 系統會自動將 DPC 下載到裝置上,並使用 ACTION_GET_PROVISIONING_MODE 處理常式啟動,以確認 DPC 是否支援工作資料夾佈建功能。
  4. 該平台會執行工作資料夾佈建作業。
  5. 佈建完工作資料夾後,DPC 會收到廣播 ACTION_PROFILE_PROVISIONING_COMPLETE。系統會在工作資料夾中啟動 DPC 的 ACTION_ADMIN_POLICY_COMPLIANCE 處理常式。建立工作資料夾後,DPC 也會在工作資料夾中執行。DPC 會推送該受管理 Google 帳戶的政策、確保裝置未處於遭駭狀態,並驗證已強制執行政策 (例如要求使用者輸入密碼)。
  6. 個人資料夾中的 DPC 會自行停用或使用者移除相關內容

設定裝置擁有者模式或 COPE

您必須在新裝置的初始設定期間或恢復原廠設定後佈建裝置擁有者模式的作業模式。裝置擁有者模式隨時可以新增至裝置。

  1. 帳戶驗證是由使用者透過設定精靈啟動,
  2. GMSCore 會使用 ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE 啟動裝置擁有者佈建作業。 3. 系統會自動將 DPC 下載到裝置上,並使用 GET_PROVISIONING_MODE 處理常式啟動,以挑選所需的佈建模式。
  3. 平台會將裝置佈建到所需的佈建模式。
  4. 裝置佈建完成後,DPC 會收到這些廣播訊息,並啟動 DPC 的 ACTION_ADMIN_POLICY_COMPLIANCE 處理常式:
  5. DPC 會使用 Global.DEVICE_PROVISIONED 的值,驗證裝置是否為新裝置或恢復原廠設定 (未佈建):
    • 0 未佈建。
    • 1 已佈建。
  6. DPC 會推送受管理裝置的政策、確保裝置未處於遭駭狀態,並驗證強制執行政策 (例如需要密碼),藉此完成佈建程序。

Google 帳戶方法的導入註意事項

  • DPC 應在所用的啟動意圖中尋找特定額外項目,藉此偵測 Google 帳戶驗證流程 (請參閱 LaunchIntentUtil):

    • android.accounts.Account 類型的帳戶:表示帳戶是透過設定精靈新增,或依序前往「設定」>「新增帳戶」,後者需要啟動的 DPC 來管理裝置或設定檔。
    • is_setup_wizard 類型的布林值如果為 true,系統會在設定精靈完成前於設定精靈中啟動 DPC,如果不是,請依序點選「設定」>「新增帳戶」或其他流程。

    檢查 Google 帳戶方法中是否啟動了 DPC:

    boolean isSynchronousAuthLaunch(Intent launchIntent) {
      return launchIntent.hasExtra("is_setup_wizard");
    }
    
  • DPC 不應在完成設定前呼叫 finish()。此外,由於 DPC 是以 startActivityForResult() 啟動,並等待結果,因此也應該傳回正值結果代碼 (例如 RESULT_OK)。

    如果 DPC 設定流程到達傳送 ACTION_PROVISION_* 意圖的時間點,DPC 應等待佈建程序傳回的結果代碼,再呼叫 finish()。啟動 ACTION_PROVISION_* 意圖時,請使用 startActivityForResult()onActivityResult() 回呼。(範例請參閱 LaunchActivitySetupSyncAuthManagement)。

    由於設定程序可能是非同步的,因此 DPC 無法依賴 RESULT_OK 的結果代碼來表示佈建成功。唯一保證的方法就是在佈建成功時仰賴 DeviceAdminReceiver 回呼。RESULT_CANCELED 表示使用者在設定流程的同步部分中退出,而 DPC 應回應此情況。

    在這個範例中,DPC 會啟動佈建作業,並等待活動傳回的結果代碼:

    Intent intent = new Intent(ACTION_PROVISION_MANAGED_PROFILE);
    startActivityForResult(intent, REQUEST_MANAGED_PROFILE);
    ...
    
    @Override
    public void onActivityResult(int req, int res, Intent i) {
        if (req == REQUEST_MANAGED_PROFILE) {
            if (res == Activity.RESULT_OK) {
                setResult(Activity.RESULT_OK);
                finish();
            } else {
                Toast.makeText(this, “Provisioning failed”,
                        Toast.LENGTH_SHORT).show();
            }
        }
    }
    
  • 如果裝置已佈建完成,DPC 不應嘗試設定裝置擁有者模式的作業模式 (請參閱 ProvisioningStateUtil.isDeviceProvisioned())。在這個範例中,DPC 會檢查裝置是否已佈建:

    public static boolean isDeviceProvisioned(Context context) {
    ContentResolver cr = context.getContentResolver();
        return
    Settings.Global.getInt(cr, DEVICE_PROVISIONED, 0) != 0;
    }
    
  • 選用設定。DPC 可以在啟動佈建作業時使用 EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE 額外項目,將狀態資訊傳回其 DeviceAdminReceiver (設定檔擁有者案例是在工作資料夾內執行)。佈建完成後,TestDPC 會使用這個額外項目,在 Google 帳戶流程中輸入另一組不同的活動。詳情請參閱 DeviceAdminReceiver

    public class DeviceAdminReceiver extends android.app.admin.DeviceAdminReceiver
    {
      @Override
      public void onProfileProvisioningComplete(Context context, Intent intent) {
        // Retrieve the admin extras bundle, which we can use to determine the original context for
        // Test DPC's launch.
        PersistableBundle extras = intent.getParcelableExtra(
                EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE);
        ...
    
  • 如要設定工作資料夾,DPC 必須將新增的帳戶遷移至新的工作資料夾。為此,DPC 應傳送 ACTION_PROVISION_MANAGED_PROFILE 啟動意圖中提供的帳戶。

  • DPC 應在設定結束時,向使用者提供明確的行動號召 (例如「完成」按鈕) 以退出應用程式,以免使用者以為自己已經在流程中遇到死路。

  • DPC 應使用設定精靈主題或版面配置程式庫,以便提供流暢且一致的使用者體驗。

NFC 方法

DPC 可以使用 NFC 佈建方法來設定裝置擁有者模式。在 NFC 佈建方法 (或 NFC 標記) 中,您會建立一個 NFC 程式設計師應用程式,其中包含初始政策和 Wi-Fi 設定、設定和客戶佈建詳細資料,以便設定裝置擁有者模式。當您或您的客戶在 Android 裝置上安裝 NFC 程式設計師應用程式後,該裝置就會成為程式設計師裝置。

如要佈建裝置,IT 管理員會從包裝盒中拿出新裝置,將其與程式設計人員裝置或 NFC 標記相互襯托。後者會將設定傳輸至裝置,使其連線至網際網路並下載適當的政策和設定。接著,裝置會由 DPC 管理。

佈建裝置後,Google Play 會暫時顯示非受管內容,而非應該顯示的已核准應用程式和集合。延遲時間最長可能需要幾分鐘,最長可達 1 小時。

建立 NFC 程式設計師應用程式和程式設計師裝置

搭載 Android 10 以下版本的裝置可使用 Android Beam 完成 NFC 佈建:

  1. 下載 NFC 程式設計師範例應用程式。您可以原封不動地使用範例,也可以修改為預設值。
  2. 在所選裝置上安裝 Programmer 應用程式。
  3. 啟動 NFC 程式設計師應用程式,然後為 com.example.android.apis 選取「Load Defaults」。(這段文字會根據您設定的預設參數而有所不同)。

佈建客戶裝置

  1. 使用新裝置或已恢復原廠設定的裝置,使用程式裝置或 NFC 標記來增強效果。
  2. 確認裝置在啟動時仍顯示於顯示的初始「歡迎」畫面。文字是在程式設計師應用程式的 Ready to send:{...} 中指定。
  3. 等待 DPC:
    1. 可為裝置加密。
    2. 如果是 Code-Division 多重存取 (CDMA) 裝置:在顯示電話使用者介面時啟用手機 (無需互動)。
    3. 設定 Wi-Fi 連線。
    4. 下載 com.example.android.apis 的 APK 檔案。
    5. 安裝 com.example.android.apis.
    6. 將 com.example.android.apis 中的範例裝置管理員設為裝置擁有者。
    7. 裝置擁有者啟用後,顯示成功「浮動式訊息」。
  4. 返回首頁後 (系統會自動略過設定精靈),請確認 com.example.android.apis 已設為裝置擁有者:
    1. 依序前往「Settings」>「Security」>「Device admin」,確認無法移除範例裝置管理員。
    2. 依序前往「Settings」>「Users」>「Users & Profiles」>「您 (擁有者)」,確認是唯一可用的帳戶 (裝置一次只能有一位有效的裝置擁有者)。

其他資源

進階 NFC 說明瞭使用各種標記技術、寫入 NFC 標記,以及前景調度等主題。

手動裝置政策控制器 (DPC) 安裝方法

如要使用手動 DPC 安裝佈建方法設定設定檔擁有者模式,使用者是從 Google Play 下載並安裝 DPC。接著,DPC 會引導使用者完成其餘程序,為代管 Google 帳戶設定設定檔擁有者。

建立工作資料夾之前或之後,DPC 可以新增代管 Google 帳戶。舉例來說,DPC 可根據使用者的 EMM 憑證建立工作資料夾,而不是先提示代管 Google 帳戶。

設定商家檔案擁有者模式

請先新增受管理 Google 帳戶

  1. 使用者從 Google Play 下載並安裝您的 DPC。
  2. DPC 先新增代管 Google 帳戶,再使用 AccountManager.addAccount() 建立工作資料夾。
  3. DPC 會開始在個人資料夾中執行,並使用下列指令啟動建立工作資料夾的程序:
  4. 工作資料夾中的 DPC 會完成佈建程序。建立工作資料夾後,DPC 也會在工作資料夾中執行。工作資料夾中的 DPC 會推送該代管 Google 帳戶的政策,確保裝置未處於遭駭狀態,並驗證強制執行政策 (例如需要密碼)。
  5. 佈建完工作資料夾後,DPC 會收到廣播 ACTION_PROFILE_PROVISIONING_COMPLETE
  6. 個人設定檔中的 DPC 會自行停用或使用者將其移除

請先建立工作資料夾

  1. 使用者從 Google Play 下載並安裝您的 DPC。
  2. DPC 會開始在個人資料夾中執行,並使用下列指令啟動建立工作資料夾的程序:
  3. DPC 使用 AccountManager.addAccount() 新增代管 Google 帳戶。
  4. DPC 收到廣播 ACTION_PROFILE_PROVISIONING_COMPLETE 並讀取 EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
  5. 工作資料夾中的 DPC 會完成佈建程序。建立工作資料夾後,DPC 也會在工作資料夾中執行。工作資料夾中的 DPC 會推送該受管理 Google 帳戶的政策,確保裝置未處於遭駭狀態,並驗證已強制執行政策 (例如需要密碼)。
  6. DPC 會使用 DevicePolicyManager.setProfileEnabled() 啟用工作資料夾。
  7. 個人設定檔中的 DPC 會自行停用或使用者將其移除

  1. Android 5.1 中的 Google 帳戶方法僅支援設定檔擁有者模式,使用者只能依序前往「設定」>「新增帳戶」進行設定。