デバイスをプロビジョニングするには、いくつかの方法があります。使用するプロビジョニング方法は、ユーザーのビジネス要件によって決まります。
デバイスのプロビジョニングの基本
お客様がサポートしようとしているデバイス プロビジョニングのデプロイ シナリオ(BYOD や会社所有など)によって、使用する運用モード(デバイス所有者モードやプロファイル所有者モードなど)が決まります。同様に、サポートする必要がある運用モードと Android リリースによって、実装するプロビジョニング方法が決まります。
デプロイメント シナリオ
会社所有のデプロイのシナリオでは、会社は従業員が使用するデバイスを所有し、完全に管理します。通常、組織はデバイス全体を厳密にモニタリングして管理する必要がある場合に、会社所有のデバイスをデプロイします。
BYOD デプロイ シナリオをサポートする会社は、従業員が個人所有のデバイスを動作させ、それらのデバイスを使用して特権企業の情報やアプリケーションにアクセスできます。
運用モード
会社所有のデプロイは、デバイス所有者モードのオペレーションによってサポートされます。Android では、管理アプリを Device Policy Controller(DPC)と呼びます。DPC は Android デバイスにポリシーを適用し、デバイス所有者として機能する場合はデバイス全体を管理します。DPC は、デバイス所有者として、デバイス全体の接続設定、グローバル設定の構成、出荷時設定へのリセットなど、デバイス全体のアクションを実行できます。
BYOD デプロイは、プロファイル所有者の運用モードでサポートされています。企業は DPC を通じて、デバイス上のプライマリ ユーザー アカウントに仕事用プロファイルを追加することで、個人用デバイスを仕事用にできます。仕事用プロファイルはプライマリ ユーザーに関連付けられていますが、独立したプロファイルとして関連付けられています。プロファイル所有者は、DPC がデバイス上の仕事用プロファイルのみを管理し、仕事用プロファイルの外部では限定的に制御します。
レガシー デバイス デプロイは、レガシー操作モードによってサポートされ、DPC によるデバイスの限定的な制御(デバイスのワイプ、パスコードの要求、一部のポリシーの適用など)が可能になります。ユーザーが Google アカウントを追加するか、DPC のレガシー デバイスに managed Google Play アカウントを追加できるようにすることで、Google Play を通じて以前のデバイスでアプリを管理できます。
デバイス所有者モードまたはプロファイル所有者モードを実装できるデプロイでは、レガシーモードの使用はおすすめしません。大規模なフリート全体で「最低限の共通値」ソリューションを使用する代わりに、可能な限り最高レベルのデバイス管理を使用する必要があります。
デバイス所有者のプロビジョニング方法
新しいデバイスの初期セットアップ時または出荷時設定へのリセット後に、デバイス所有者の動作モードをプロビジョニングする必要があります。それ以外の場合、デバイス所有者モードをデバイスにプロビジョニングすることはできません。
デバイス所有者モードのプロビジョニングには、ユースケースに応じて 2 種類の主要な方法があります。
- デバイス ドリブン フローの場合、IT 管理者は NFC を使用して多数のデバイスをプロビジョニングできます。このフローは managed Google Play アカウントまたは G Suite のシナリオで使用できます。
- ユーザー主導のフローでは、G Suite を使用しているかどうかによってオプションが異なります。
- G Suite のシナリオでは、ユーザーは最初のデバイスのセットアップ時に Google アカウントを追加し、DPC はデバイス所有者をセットアップする手順を案内する必要があります。エンドユーザー主導のフローは、エンドユーザーが新しいデバイスをセットアップする際に役立ちます。また、デバイスが NFC をサポートしていない場合の代替手段にもなります。
- 組織で G Suite を使用していない場合は、managed Google Play アカウントを使用する必要があります。
注: Play でアプリの配信を特定の国に限定している場合、デバイス所有者のプロビジョニング中にこれらの制限は無視されます。 デバイスが対象国にない場合でも、DPC はダウンロードされます。
プロファイル所有者のプロビジョニング方法
プロファイル所有者の運用モードをプロビジョニングするために推奨される方法は、組織が G Suite を使用しているかどうかによって異なります。
- G Suite では、ユーザーがユーザー Google アカウントを追加し、DPC がプロファイル所有者の設定手順を行う、ユーザー主導のフローをおすすめします。
- 組織で G Suite を使用しない場合は、managed Google Play アカウントの使用をおすすめします。
ユーザーが DPC を手動でインストールするように指示された従来の方法もサポートされます。DPC は Google Play から DPC をダウンロードしてインストールし、その後 DPC がユーザーにプロファイル オーナーのセットアップ プロセスを案内します。
従来のデバイスのプロビジョニング方法
レガシー デバイスでは、Android 5.0 より前のバージョン、または仕事用プロファイルをサポートしません。以前のデバイスをプロビジョニングする方法として推奨される方法は、組織で管理対象の Google アカウントを使用しているかどうかによって異なります。
- マネージド Google アカウントの場合、おすすめの方法は、ユーザーが Google アカウントを追加するユーザー主導のフローであり、DPC が設定手順をユーザーに案内することです。
- 組織で managed Google アカウントを使用しない場合は、managed Google Play アカウントを使用する方法が推奨されます。この方法では、ユーザーが Google Play から DPC をインストールします。DPC では、仕事用プロファイルにアカウントを追加する方法と同様に、以前の Google Play アカウントを以前のデバイスに追加できます。
従来の方法では、ユーザーに DPC を手動でインストールするように指示され、DPC によって Google アカウントが追加されます。DPC は、ユーザーが Google Play から DPC をダウンロードしてインストールした後、セットアップの残りのプロセスをユーザーに指示します。
Android バージョン間のプロビジョニングの主要な違い
デプロイ シナリオ |
運用モード |
プロビジョニング メソッド |
* 5.0 より前 |
5.0、 5.1 |
6.0 |
7.0 |
会社所有 | デバイス所有者 | QR コード | ✓ | |||
managed Google Play アカウント | ✓ | ✓ | ||||
Google アカウント | ✓ | ✓ | ||||
NFC | ✓ | ✓ | ✓ | |||
従来版 | managed Google Play アカウント | ✓ | ||||
Google アカウント | ✓ | |||||
BYOD | プロファイル所有者 | managed Google Play アカウント | ✓ | ✓ | ✓ | |
Google アカウント | **5.1 | ✓ | ✓ | |||
手動による DPC インストール | ✓ | ✓ | ✓ | |||
従来版 | managed Google Play アカウント | ✓ | ||||
Google アカウント | ✓ | |||||
手動による DPC インストール | ✓ |
*Android バージョンが 5.0 より後であっても、仕事用プロファイルをサポートしていないデバイスにも推奨されます。通常、これらのデバイスは RAM の量が少ないデバイスです。
**Android 5.1 の Google アカウント メソッドは、プロファイル所有者モードのオペレーションのみをサポートしています。構成できるのは、[設定] > [アカウントを追加] のみです。
実装に関する一般的な考慮事項
実装するオペレーション モードに関係なく、DPC を作成する際は、次の点を考慮してください。
Google Play 開発者サービスの互換性
Google Play 開発者サービス APK ガイドは、API トランザクションを実行する前に、Google Play 開発者サービスのバージョン チェックを行うデベロッパーを対象としています。Google Play 開発者サービスの更新を試みると、デバイスのセットアップ プロセスで重大な中断が生じるため、DPC はデバイスのプロビジョニングが完了する前に Google Play 開発者サービスの更新を試行してはなりません。
DPC と Google Play 開発者サービスの互換性に関する主なポイントは次のとおりです。
- DPC は、特定のデバイスに付属している Google Play 開発者サービスを使用して実行する必要があります。
- DPC は、デバイスのプロビジョニング時に利用可能な Google Play 開発者サービスの今後のバージョンで新機能に依存すべきではありません。
デバイスのプロビジョニングが完了すると、DPC は Google Play 開発者サービスを更新して、最新の機能を利用できるようにするため、ユーザーにプロンプトを表示できます。ただし、なんらかの理由で機能を使用できない場合は、DPC をデバイスに付属していたバージョンに適切にフォールバックする必要があります。
デバイスの詳細を取得しています
伝播の遅延により、新しく登録されたデバイスの devices.get がデバイスの詳細を返すまでに 2 分ほどかかることがあります。
エンドユーザーがデバイスまたは仕事用プロファイルを使用する前にワークフローに詳細が必要な場合は、DPC の進行状況画面を使用して、呼び出しが成功するまで待つことをおすすめします。
プロファイル所有者モードの実装に関する考慮事項
プロファイル所有者の運用モードを実装する DPC を作成する際は、次の点を考慮してください。
個人の DPC を削除または無効にする
プロファイル所有者の運用モードをプロビジョニングすると、DPC は個人用プロファイルで実行を開始し、仕事用プロファイルを作成するプロセスを開始します。仕事用プロファイルが作成されると、DPC も仕事用プロファイル内で実行されます。仕事用プロファイルの DPC がプロビジョニング プロセスを完了します。その場合、個人用プロファイルの DPC は自動的に無効になるか、デバイス ユーザーがそれを削除する必要があります。
ユーザーが個人用 DPC を削除する
- 個人用 DPC は
ACTION_MANAGED_PROFILE_PROVISIONED.
をリッスンします(Android 5.1 デバイスでは、代わりに個人用 DPC はACTION_MANAGED_PROFILE_ADDED
をリッスンする必要があります)。 - 個人 DPC がアンインストール リクエスト
ACTION_UNINSTALL_PACKAGE
を開始する。ユーザーに個人用 DPC のアンインストールを促すメッセージが表示されます。最高のユーザー エクスペリエンスを実現するには、プロビジョニング フロー中にアンインストール プロセスを行う必要があります。
個人の DPC は自動的に無効化される
- 個人用 DPC は
ACTION_MANAGED_PROFILE_PROVISIONED.
をリッスンします(Android 5.1 デバイスでは、代わりに個人用 DPC はACTION_MANAGED_PROFILE_ADDED
をリッスンする必要があります)。 - 該当する場合、個人の DPC は自身を無効にする前にデバイス管理者権限を解放する必要があります。
- 個人 DPC は
COMPONENT_ENABLED_STATE_DISABLED
パラメータを使用してsetApplicationEnabledSetting
無効化リクエストを開始します。 - ユーザーは、Google Play から個人用 DPC を再度有効にできます。
デバイス所有者モードの実装に関する考慮事項
デバイス オーナーの運用モードを実装する DPC を作成する際は、次の点を考慮してください。
新品または出荷時設定にリセットしてください
新しいデバイスの初期セットアップ時または出荷時設定へのリセット後に、デバイス所有者の動作モードをプロビジョニングする必要があります。それ以外の場合、デバイス所有者モードをデバイスにプロビジョニングすることはできません。
デバイス所有者モードを使用すると、DPC はデバイスを完全に制御できます。初期設定を許可した後、デバイス所有者モードのプロビジョニングを行う場合:
- マルウェアがデバイス所有者を作成して、デバイスを乗っ取るおそれがあります。
- デバイスにユーザーデータやアプリがすでに存在する場合、プライバシーの問題が発生する可能性があります。
会社所有デバイスのみにデバイス所有者モードを設定する
デバイス所有者モードは、お客様の会社が所有していると判断したデバイスにのみプロビジョニングする必要があります。これを確認するには、一意のデバイス識別子(シリアル番号など)を検出するか、EMM ポリシーによりデバイスの登録が許可される専用のアカウント セットを使用します。
デバイスのオーナー権限を確認できない場合は、デバイス所有者モードが誤ってプロビジョニングされないように、フェイルセーフ メカニズムを作成する必要があります。たとえば、デバイス オーナー モードをプロビジョニングする前に、デバイス ユーザーに確認や肯定的なアクションを促すことができます。
システムアプリを有効にする
DPC が仕事用プロファイルをプロビジョニングする場合、ランチャー アイコンのないシステムアプリはデバイスにとって重要であり、仕事用プロファイル内で自動的に実行が許可されます。ランチャー アイコンのあるシステムアプリはオプションとみなされるため、これらを有効にするかどうかを決定できます。
Google Play を通じてシステムアプリを有効にする
Google Play を使用してシステムアプリを簡単に有効にできます。ユーザーはアプリのアップデートが利用可能になり次第、入手できます。
Android フレームワーク API を使用してシステムアプリを有効にする
ユーザーがデバイスの使用を開始したらすぐにシステムアプリを表示できるようにするには、デバイスのプロビジョニング プロセスでシステムアプリを有効にします。DPC は、パッケージ名またはインテント(DevicePolicyManager.enableSystemApp()
を使用)でシステムアプリを有効にします。
EMM コンソールで有効にして IT 管理者に提示するシステムアプリを特定する方法はいくつかあります。
システムアプリ カタログを作成する
この方法では、各デバイスがデバイス上のアプリを判別し、そのデータを EMM コンソールに返します。EMM コンソールでは、デバイス ポリシーの作成時にこのデータが動的に表示されます。これにより、IT 管理者はアプリごとにアプリを管理できます。
- 仕事用プロファイルがデバイスにまだプロビジョニングされていない場合は、
queryIntentActivities()
を使用して、デバイス上のランチャー アイコンがあるすべてのアプリのリストを取得します。
private List
getAppsWithLauncher() {
Intent i = new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_LAUNCHER);
return getPackageManager().queryIntentActivities(i, 0);
} - 仕事用プロファイルがデバイスにすでにプロビジョニングされている場合は、
PackageManager.GET_DISABLED_COMPONENTS
とPackageManager.GET_UNINSTALLED_PACKAGES
を使用して、仕事用プロファイルのすべてのアプリのリストを pull します。 - アプリの一覧でシステムアプリを見つけるには、
FLAG_SYSTEM
を確認します。これは、アプリがデバイスのシステム イメージにインストールされているかどうかを示します。
長所:
- IT 管理者は、すべてのデバイスにおけるアプリの全体像を把握できます。
- 有効にするアプリをきめ細かく制御できます。
デメリット:
- デバイスごとにアプリカタログが異なるため、1 つのポリシー構成のモデルを複数のデバイスタイプに適用することは困難です。
- OEM 固有のアプリを、IT 管理者にとって意味のある形で提示することは困難な場合があります。
システムアプリを機能別に分類する
IT 管理者は、デバイスのグループに対してシステムアプリを有効にする場合、機能に基づいて汎用アプリを選択します。たとえば、「システム ブラウザ」を選択します。DPC は、そのインテントのすべてのシステムアプリを許可します。
長所:
- IT 管理者向けのシンプルな機能ベースの支援。
- さまざまなデバイスで一貫した機能を確保します(少なくとも一般的なユースケースで)。
デメリット:
- システムアプリを、すべてのデバイスタイプでサポートされているアプリに制限します。
- IT 管理者は、アプリの OEM バージョン(Samsung® ブラウザなど)を push し、別のバージョン(LG® ブラウザなど)をプッシュしないことをおすすめします。
- IT 管理者は、複数のアプリを push したくない場合がありますが、インテント ハンドラが複数ある場合は阻止できません。
承認されたシステムアプリのみをサポートする
OEM と協力して特定の OEM パッケージを特定し、EMM コンソール内でそれらのパッケージのみをサポートします。また、OEM アプリが Google Play でホストされていないため、通常であれば OEM アプリのマネージド構成をカタログ化することもできます。
長所:
- 統合ワークフローを大幅に簡素化し、最初の 2 つのオプションで問題となるエッジケースを排除します。
- OEM アプリのマネージド構成をカタログ化し、IT 管理者向けの EMM コンソールで表示できます。
- フラッグシップ デバイスをサポートするために、OEM との緊密な関係を実現します。
デメリット:
- その結果、スケーラビリティが低下し、消費者の選択が減少します。
以前のモードの実装に関する考慮事項
以前の運用モードを実装する DPC を作成する際は、次の点を考慮してください。
デバイスが仕事用プロファイルに対応しているかどうかを判断する
仕事用プロファイルをサポートしていないデバイスでは、従来の運用モードをプロビジョニングできます。次の場合、デバイスは仕事用プロファイルをサポートしていません。
- 5.0 より前のバージョンの Android を実行している。
- RAM の容量が少ない(5.0 以降の Android バージョンを実行している場合でも)。
DPC では、仕事用プロファイルがサポートされているかどうかを判断するために PackageManager を使用できます。
if (!getPackageManager().hasSystemFeature(
PackageManager.FEATURE_MANAGED_USERS)) {
// Use legacy mode
...
}
DPC のテストシナリオ
Test DPC は、Google が提供する Google 提供のオープンソース アプリで、DPC アプリのエンタープライズ機能をテストできます。Test DPC は github または Google Play から入手できます。Test DPC では以下を行うことができます。
- Android で機能をシミュレートする
- ポリシーの設定と適用
- アプリとインテントの制限を設定する
- 仕事用プロファイルの設定
- フルマネージド Android デバイスをセットアップする
Test DPC は主に Android のエンタープライズ ソリューションのテストに使用することを目的としていますが、Android 機能のサンプルコードのソースコードとして使用することもできます。
プロビジョニングをカスタマイズする
デバイスのプロビジョニング中、システム ユーザー インターフェースのステータスバーにはデフォルトの色が表示され、画面上部にはデフォルトのロゴが表示されます。カスタムの色とロゴを設定して DPC とシステム インターフェースのビジュアル トランジションを統一するか、管理者が EMM コンソールを使用して変更できるようにします。たとえば、管理者が会社のロゴをアップロードしたり、通知が表示される画面の外観をカスタマイズしたりします。
DPC には、DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR
エクストラと DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI
エクストラを使用して色とロゴの選択肢が適用されます。
カスタムカラーを設定するには、EXTRA_PROVISIONING_MAIN_COLOR
を使用して、デバイスのプロビジョニング中に表示される主色を示す整数を設定します。ACTION_PROVISION_MANAGED_PROFILE
または ACTION_PROVISION_MANAGED_DEVICE
を使用して、インテントにエクストラ(定数)を設定します。
整数がどのように表現されるかについては、色をご覧ください。例については、TestDPC アプリの MAIN_COLOR
をご覧ください。
カスタムロゴを設定するには、EXTRA_PROVISIONING_LOGO_URI
を使用して、デバイスのプロビジョニング中に画面上部に表示される画像を設定します。ACTION_PROVISION_MANAGED_PROFILE
または ACTION_PROVISION_MANAGED_DEVICE
を持つインテントにエクストラ(定数)を設定します。画像のピクセル密度が妥当であることを確認します。
例については、TestDPC アプリの LOGO_URI
をご覧ください。
QR コードのメソッド
QR コードのプロビジョニング方法では、設定ウィザードから QR コードをスキャンしてデバイス所有者モードをセットアップおよび構成します。QR コードには、DPC がデバイスをプロビジョニングするために必要なすべての情報と、Key-Value ペアのペイロードが含まれています。
EMM コンソールは、IT 管理者がプロビジョニングするデバイスの QR コードを作成するための手段を提供します。IT 管理者はエンドユーザーに QR コードを送信し、エンドユーザーは QR コードをスキャンしてデバイスをプロビジョニングします。
QR コードのプロビジョニングのユースケース
タブレットなどの一部のデバイスは NFC に対応していません。QR コードのプロビジョニングは、NFC をサポートしていないデバイスの分散フリートをプロビジョニングする簡単な方法です。IT 管理者は、ユーザーに QR コードを送信して、ユーザー主導のプロビジョニングを許可できます。
QR コードのプロビジョニングには、Google ドメインや Google アカウントなどの Google ID は必要ありません。Android を使用しているが G Suite を使用していない組織は、Google ID を持っていません。
NFC と同様に、QR コード プロビジョニングでは、Google ID(または任意の ID)が必要でない、または望ましくない、キオスクと 1 回限りのデプロイが可能になります。たとえば、店舗内のキオスク デバイスは誰にも属さないため、エンドユーザー ID を持つべきではありません。
QR コードを作成
QR コードのプロビジョニングに有効な QR コードは、UTF-8 でエンコードされた JavaScript® Object Notation(JSON)文字列です。有効な QR コードには次のプロパティを含めることができます。
必須
デバイスに DPC がまだインストールされていない場合は必須
EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION
EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM
デバイスがまだ Wi-Fi に接続されていない場合に推奨
Optional
EXTRA_PROVISIONING_LOCALE
EXTRA_PROVISIONING_TIME_ZONE
EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER
EXTRA_PROVISIONING_LOCAL_TIME
EXTRA_PROVISIONING_WIFI_HIDDEN
EXTRA_PROVISIONING_WIFI_SECURITY_TYPE
EXTRA_PROVISIONING_WIFI_PROXY_HOST
EXTRA_PROVISIONING_WIFI_PROXY_PORT
EXTRA_PROVISIONING_WIFI_PROXY_BYPASS
EXTRA_PROVISIONING_WIFI_PAC_URL
EXTRA_PROVISIONING_SKIP_ENCRYPTION
このサンプルは、有効な QR コードを作成します。
{ "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 コードのプロビジョニング プロセス
- 設定ウィザードで、ウェルカム画面を 6 回タップするようユーザーに求めます。タップは画面上の同じ場所で行う必要があります。
- 設定ウィザードで QR コードリーダーをダウンロードできるように、インターネットに接続するよう求めるメッセージが表示されます。
- Google Play 開発者サービスは、QR コード認識エンジンを含むモジュールをダウンロードします。
- ユーザーが IT 管理者から提供された QR コードをスキャンします。
- 設定ウィザードが DPC アプリをダウンロードし、
ACTION_PROVISION_MANAGED_DEVICE
を使用してデバイス所有者のプロビジョニング プロセスを開始します。
managed Google Play アカウント メソッド
DPC は、managed Google Play アカウントのプロビジョニング方法を使用して、デバイス所有者モードまたはプロファイル所有者モードを設定できます。このプロビジョニング方法は、現在 G Suite を使用していない組織を対象としています。
managed Google Play アカウントのプロビジョニングでは、 DPC サポート ライブラリが使用されます。このクライアント ライブラリを使用すると、managed Google Play アカウントをスムーズに運営できます。また、managed Google Play アカウントのプロビジョニング プロセスに対する今後の更新との互換性も維持されます。
デバイスのプロビジョニングの前提条件
- エンタープライズの作成と登録で説明されているように、エンタープライズ ID は EMM ID で作成および登録され、ESA が設定されます。
- ユーザーの企業 ID は EMM コンソールに知られています。
- ユーザーは、EMM コンソールで承認された認証情報(通常は会社のメール認証情報)を使用して DPC アプリにログインできます。
プロファイル所有者モードを設定する
BYOD シナリオで個人用デバイスとして使用されているデバイスに、プロファイル所有者の操作モードをプロビジョニングできます。
- ユーザーが Google Play から DPC を手動でダウンロードして起動します。
- DPC は
ACTION_PROVISION_MANAGED_PROFILE
を使用して仕事用プロファイルをプロビジョニングします。 - 最後の設定手順を完了します。
デバイス所有者モードをセットアップする
新しいデバイスの初期セットアップ時または出荷時設定へのリセット後に、デバイス所有者の動作モードをプロビジョニングする必要があります。それ以外の場合、デバイス所有者モードをデバイスにプロビジョニングすることはできません。
デバイスのセットアップ中に、アカウントを追加するよう求められたら、DPC 固有の特別なトークンを入力します。トークンは「afw#DPC_IDENTIFIER」の形式です。ACME という名前の EMM の場合、「afw#acme」は ACME EMM のデフォルトの DPC をインストールします。各 EMM は、プロビジョニング プロセスで使用する前に、特定の DPC 識別子を Google にリクエストする必要があります。
- ユーザーが新しいデバイスまたは初期状態にリセットしたデバイスの電源を入れると、設定ウィザードが起動します。
- アカウントの追加を求められたら、EMM の DPC を識別する特別なトークンを「afw#DPC_IDENTIFIER」形式で入力します。
- トークン内の DPC 識別子を使用して、設定ウィザードは一時的な Google アカウントをデバイスに追加します。この一時的なアカウントは、Google Play から EMM の DPC をダウンロードする場合にのみ使用され、最後の設定手順から削除されます。
- DPC は
ACTION_PROVISION_MANAGED_DEVICE
を使用してデバイスをプロビジョニングします。 - 最後の設定手順を完了します。
以前のモードの設定
デバイスが仕事用プロファイルをサポートしていない場合は、個人所有デバイスとして BYOD のシナリオで使用されているデバイスで、従来の運用モードをプロビジョニングできます。
すべての運用モードの最終設定手順
この手順は、プロファイル所有者モード、デバイス所有者モード、以前のモードを設定するための最初の手順が完了した後にのみ行います。
- DPC は、DPC サポート ライブラリを初期化して、デバイスが managed Google Play アカウントをサポートできるようにします。
AndroidForWorkAccountSupport androidForWorkAccountSupport = new AndroidForWorkAccountSupport(context, admin); androidForWorkAccountSupport.ensureWorkingEnvironment(callback);
デバイスでデバイス所有者モードを設定する場合、DPC のダウンロード用に追加された一時的な Google アカウントが削除されます。 - ユーザーが EMM 認証情報を使用して DPC にログインします。通常、これらは企業のメール認証情報です。
- DPC は、認証済みの企業ユーザーの managed Google Play アカウントの認証情報を EMM コンソールにリクエストします。
- EMM コンソールにユーザー向けの Google Play
userId
がない場合は、Users.insert()
を呼び出して新しいユーザーが作成されます。デバイス所有者モードをプロビジョニングする場合は、デバイス アカウント(専用のデバイス デプロイの場合)またはユーザー アカウント(会社所有のデプロイの場合)を指定します。注: ユーザー ID は EMM に固有のものであるため、企業の登録を解除した別の EMM を使用して再登録した場合は、再利用できません。
Devices.update
を呼び出して、デバイスのポリシーを設定します。このポリシーは、managed Google Play アカウントをデバイスに追加する前に設定する必要があります。設定しないと、ポリシーをデバイスに追加してからしばらくの間適用されません。- EMM コンソールは、
Users.generateAuthenticationToken()
を呼び出してuserId
のアカウント認証情報をリクエストします。この認証トークンは有効期間が短く、再利用できません。DPC は、トークンを使用して、アカウントをプログラムで追加する必要があります(エンドユーザーには使用されません)。 - Google Play EMM API は EMM コンソールに認証トークンを返します。
- EMM コンソールが認証トークンを DPC に転送します。
- DPC は
androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback);
を使用して、managed Google Play アカウントをデバイスに追加します。
Google アカウントによる方法
DPC は、Google アカウントのプロビジョニング方法を使用して、デバイス所有者モード、プロファイル所有者モード、または以前のモードを設定できます。Google アカウントのプロビジョニング方法では、ユーザーがデバイスの初期設定時に Google アカウントを追加した後、プロビジョニングの手順をユーザーに案内します。
ユーザーが Google アカウントの認証情報を入力すると、次のようになります。
- Google 認証サーバーがユーザー アカウントを認証します。
- 次に、認証サーバーがエンタープライズ サーバーと通信して、アカウントのドメインが G Suite ドメインと EMM マネージド ドメインのどちらとして登録されているかを確認します。
- 存在する場合、システムはドメインに関連付けられた DPC を Google Play から自動的にダウンロードしてインストールします。
プロファイル所有者モードを設定する
プロファイル所有者の運用モードは、デバイスの初期設定時、またはユーザーが [設定] > [アカウントを追加] を使用してアカウントを追加する際にプロビジョニングできます。
- アカウントの認証は、設定ウィザードから、または [設定] > [アカウントを追加] から開始されます。
GMSCore が
ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE
を使用して、仕事用プロファイルのプロビジョニングを開始します。DPC は自動的にデバイスにダウンロードされ、
ACTION_GET_PROVISIONING_MODE
ハンドラを使用して起動されます。これにより、仕事用プロファイルのプロビジョニングが DPC でサポートされているかどうかが確認されます。EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
- メールアドレスなどの仕事用プロファイルの追加情報。DPC も、このバンドルの一部として is_setup_wizard を受け取ります。このバンドルはACTION_GET_PROVISIONING_MODE
ハンドラとACTION_ADMIN_POLICY_COMPLIANCE
ハンドラに含まれます。
EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE
—新しい仕事用プロファイルに移行する認証済みアカウントの名前。プラットフォームが仕事用プロファイルのプロビジョニングを行います。
仕事用プロファイルがプロビジョニングされると、DPC はブロードキャスト
を受信します。ACTION_PROFILE_PROVISIONING_COMPLETE
DPC のACTION_ADMIN_POLICY_COMPLIANCE
ハンドラは仕事用プロファイルで起動されます。
仕事用プロファイルを作成すると、DPC も仕事用プロファイル内で実行されます。DPC は、その管理対象 Google アカウントにポリシーを push し、デバイスが不正使用されていないことを確認して、ポリシーが適用されていることを確認します(パスワードの要求など)。個人プロフィールの DPC は無効になるか、ユーザーが削除する。

デバイス所有者モードまたは COPE をセットアップする
新しいデバイスの初期セットアップ時または出荷時設定へのリセット後に、デバイス所有者の動作モードをプロビジョニングする必要があります。それ以外のときにデバイス所有者モードをデバイスに追加することはできません。
- アカウントの認証はユーザーが設定ウィザードから開始します。
- GMSCore が
ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE
を使用して、デバイス所有者のプロビジョニングを開始します。 3. DPC が自動的にデバイスにダウンロードされ、GET_PROVISIONING_MODE
ハンドラを使用して起動されて、目的のプロビジョニング モードが選択されます。EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
—ロケール、Wi-Fi、メールアドレスなど、仕事用プロファイルの追加情報。DPC も、このバンドルの一部として is_setup_wizard を受け取ります。このバンドルはACTION_GET_PROVISIONING_MODE
ハンドラとACTION_ADMIN_POLICY_COMPLIANCE
ハンドラに含まれます。 - プラットフォームは、デバイスを目的のプロビジョニング モードにプロビジョニングします。
デバイスがプロビジョニングされると、DPC は次のブロードキャストを受信し、DPC の
ACTION_ADMIN_POLICY_COMPLIANCE
ハンドラが起動します。
ACTION_READY_FOR_USER_INITIALIZATION
ACTION_PROFILE_PROVISIONING_COMPLETE
.DPC は
Global.DEVICE_PROVISIONED
の値を使用して、デバイスが新品または出荷時の設定にリセットされた(プロビジョニングされていない)ことを確認します。
0 - プロビジョニングされていません。
1 - プロビジョニング済み。DPC は、その管理対象デバイスのポリシーをプッシュしてデバイスがプロビジョニングされた状態であり、デバイスが強制適用されていること(パスワードの要求など)を確認することでプロビジョニング プロセスを完了します。

以前のモードの設定
従来の運用モードは、デバイスの初期設定時、またはユーザーが [設定] > [アカウントを追加] で追加する際にプロビジョニングできます。managed Google Play を Google アカウントのあるユーザーが利用できるようにするための要件は次のとおりです。
- Google アカウントがマネージド Google ドメインの一部になっている。
- managed Google ドメインは、Google Play EMM API にバインドされた EMM を使用して Android 用に設定されています。
従来のデバイスでのアプリ管理のみを行う場合は、DPC は不要です。その場合は、[設定] > [アカウントを追加] で Google アカウントを追加します。アプリの管理には、おすすめのアプリのキュレーション、限定公開アプリの利用、ライセンスの購入と配布が含まれます。
DPC に Google アカウントを追加するには:
- ユーザーが Google Play から DPC をダウンロードして起動します。
- DPC は
AccountManager.addAccount()
を使用して管理対象の Google アカウントを追加します。AccountManager.KEY_ACCOUNT_NAME
を使用して特定の Google アカウントを追加する実装例については、TestDPC をご覧ください。 - (省略可)DPC は自身をデバイス管理として設定します。DPC はデバイス管理者として、アプリ管理以外のデバイス管理機能を備えています。
Google アカウント メソッドの実装に関する考慮事項
DPC は、使用された起動インテントの特定のエクストラを探すことで、Google アカウント認証フローを検出します(
LaunchIntentUtil
を参照)。android.accounts.Account
タイプのアカウント - 設定ウィザードまたは [設定] > [アカウントを追加] からアカウントが追加されたことを示します。この場合、デバイスまたはプロファイルを管理するには起動した DPC が必要です。- ブール型の
is_setup_wizard
true の場合、DPC は設定ウィザードが完了する前に設定ウィザードで起動されました。それ以外の場合は、[設定] > [アカウントを追加] または別のフローで開始できます。
DPC が Google アカウント メソッドの一部として起動されたかどうかを簡単に確認する方法は次のとおりです。
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()
コールバックを使用します。(例については、LaunchActivity
とSetupSyncAuthManagement
をご覧ください)。セットアップ プロセスの非同期の性質上、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 バンプ)では、デバイス オーナーの運用モードを構成するために必要な初期ポリシーと Wi-Fi 構成、設定、プロビジョニングの詳細を含む NFC プログラマー アプリを作成します。デベロッパーやお客様が Android デバイスに NFC プログラマー アプリをインストールすると、そのデバイスはプログラマー デバイスになります。
デバイスをプロビジョニングする場合、IT 管理者は新しいデバイスを箱から取り出し、プログラマーのデバイスにぶつかります。バンプはデバイスをインターネットに接続して、適切なポリシーと設定をダウンロードします。デバイスは DPC によって管理されます。
デバイスがプロビジョニングされると、しばらくの間、Google Play は承認されているアプリやコレクションではなく管理対象外のコンシューマ コンテンツを表示します。この遅延は数分から 1 時間ほどかかります。
NFC プログラマー アプリとプログラマー デバイスを作成する
- Google Cloud Connect の EMM コミュニティから、NFC プログラマーのサンプルアプリをダウンロードします。サンプルアプリは、そのまま使用することも、デフォルト値に変更することもできます。デフォルト パラメータのサンプルコードをご覧ください。
- プログラマー デバイスとなるデバイスに NFC プログラマー アプリをインストールします。
- NFC プログラマー アプリを起動し、[com.example.android.apis] の [Load Defaults] を選択します。(このテキストは、設定したデフォルトのパラメータによって異なります)。
お客様のデバイスをプロビジョニングする
- プログラマー デバイスを新しいデバイスまたは初期状態にリセットしたデバイスでバンプします。
- 起動時に初期状態で [ようこそ] 画面が表示されることを確認します。このテキストは、プログラマー アプリの
Ready to send:{...}
で指定します。 - DPC が完了するまで待ちます。
- デバイスを暗号化する
- Code-Division Multiple Access(CDMA)デバイスの場合: テレフォニー ユーザー インターフェースが表示されている間、スマートフォンを有効化します(操作は必要ありません)。
- Wi-Fi 接続を設定します。
- com.example.android.apis の .apk ファイルをダウンロードする。
- com.example.android.apis をインストールします。
- com.example.android.apis の Device Policy 管理者をデバイス所有者として設定する。
- デバイス所有者がアクティブである場合に、トーストが表示されます。
- ホームページに戻り(セットアップ ウィザードが自動的にスキップされたら)、com.example.android.apis がデバイス所有者として設定されていることを確認します。
- [設定] > [セキュリティ] > [デバイス管理者] で、[Sample Device Admin] を削除できないことを確認します。
- [設定] > [ユーザー] > [ユーザーとプロファイル] > [自分(オーナー)] で、所有者が唯一のアカウントであることを確認します(デバイスには一度に 1 人のアクティブなデバイス オーナーのみが関連付けられます)。
NFC プログラマー アプリのコードサンプル
特に役に立つと思われる NFC プログラマー アプリのセクションには、インライン コメントがあります。NFC プログラマー アプリですべてのサンプルコードを表示するには、Java デコンパイラ プログラムを使用してサンプル .apk ファイルを展開します。
initializePropertyUI() メソッド
initializePropertyUI()
メソッドは、NFC プログラマー アプリのユーザー インターフェース要素(編集可能なテキスト ボックスとチェックボックス)を初期化します。これらの要素の変更は、mProps
変数が保持する Key-Value ペア(KVP)に同期されます。mProps
変数は最終的に、NFC バンプを介してデバイスに送信されます。
private void initializePropertyUI(int paramInt1, int paramInt2, final String paramString) { Log.d("DeviceProvisioningProgrammerSample","initializeProperty for " + paramString); final EditText localEditText = (EditText)findViewById(paramInt1); final CheckBox localCheckBox =(CheckBox)findViewById(paramInt2); /* Here we initialize text boxes so that when their text is edited the changes are synced to mProps. */ if(localEditText != null) localEditText.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable paramAnonymousEditable) { } public void beforeTextChanged(CharSequence paramAnonymousCharSequence, int paramAnonymousInt1, int paramAnonymousInt2, int paramAnonymousInt3) { } public void onTextChanged(CharSequence paramAnonymousCharSequence, int paramAnonymousInt1, int paramAnonymousInt2, in paramAnonymousInt3) { if ((localCheckBox != null) && (localCheckBox.isChecked())) { DeviceProvisioningProgrammerSample.this.mProps.put(paramString, localEditText.getText().toString()); DeviceProvisioningProgrammerSample.this.refreshMessageView(); } } }); /* Here we initialize check boxes, so that when they are unchecked, the edit boxes are disabled, and the corresponding KVPs are removed from mProps. When they are checked the KVPs are re added, and the text boxes are enabled. */ if (localCheckBox != null) localCheckBox.setOnCheckedChangeListener (new CompoundButton.OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton paramAnonymousCompoundButton, boolean paramAnonymousBoolean) { Log.d("DeviceProvisioningProgrammerSample", "onCheckedChanged for " + localEditText.getText().toString() + " isChecked = " + paramAnonymousBoolean); if (paramAnonymousBoolean) { localEditText.setEnabled(true); DeviceProvisioningProgrammerSample.this.mProps.put(paramString, localEditText.getText().toString()); DeviceProvisioningProgrammerSample.this.refreshMessageView(); return; } localEditText.setEnabled(false); DeviceProvisioningProgrammerSample.this.mProps.remove(paramString); DeviceProvisioningProgrammerSample.this.refreshMessageView(); } }); }
デフォルトのパラメータ
このコードサンプルでは、NFC バンプを介してデバイスにプッシュされるデフォルト値を設定します。構成可能なパラメータの中にはサンプルに含まれていないものもありますが、場合によっては実装に含める必要があります。(このサンプルに含まれていないパラメータはこちらで確認できます)。
public void loadDefaults1(View paramView) { /* This EditText holds the KVP for EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME */ ((EditText)findViewById(2131034114)).setText("com.example.android.apis"); ((CheckBox)findViewById(2131034113)).setChecked(true); /* This EditText holds the KVP for EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION */ ((EditText)findViewById(2131034116)).setText ("https://sites.google.com/site/apidemodownload/somepage/ApiDemos.apk"); ((CheckBox)findViewById(2131034115)).setChecked(true); /* This EditText holds the KVP for EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM (note: must be URL-safe)*/ ((EditText)findViewById(2131034118)).setText("ZYk5xsY0xqic51CTqB9kLiMLqwk"); ((CheckBox)findViewById(2131034117)).setChecked(true); /* This EditText holds the KVP for EXTRA_PROVISIONING_WIFI_SSID */ ((EditText)findViewById(2131034120)).setText("\"GoogleGuest\""); ((CheckBox)findViewById(2131034119)).setChecked(true); /* This EditText holds the KVP for EXTRA_PROVISIONING_TIME_ZONE*/ ((EditText)findViewById(2131034122)).setText("Europe/London"); ((CheckBox)findViewById(2131034121)).setChecked(true); ((CheckBox)findViewById(2131034123)).setChecked(false); /* This EditText holds the KVP for EXTRA_PROVISIONING_LOCALE ((EditText)findViewById(2131034126)).setText("en_GB"); ((CheckBox)findViewById(2131034125)).setChecked(true); }
onCreate() メソッド
onCreate()
メソッドは、NFC プログラマー アプリとその機能および機能を初期化します。
android.app.extra 文字列は、DevicePolicyManager
ドキュメントに記載されている文字列に対応しています。(例: DevicePolicyManager.EXTRA_ PROVISIONING_WIFI_SSID ==
"android.app.extra.PROVISIONING_WIFI_SSID"
)。
protected void onCreate(Bundle paramBundle) { Log.d("DeviceProvisioningProgrammerSample", "onCreate"); super.onCreate(paramBundle); setContentView(2130903040); this.mTextView = ((TextView)findViewById(2131034112)); this.mProps = new Properties(); initializePropertyUI(2131034114, 2131034113, "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME"); initializePropertyUI(2131034116, 2131034115, "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION"); initializePropertyUI(2131034118, 2131034117, "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM"); initializePropertyUI(2131034120, 2131034119, "android.app.extra.PROVISIONING_WIFI_SSID"); initializePropertyUI(2131034122, 2131034121, "android.app.extra.PROVISIONING_TIME_ZONE"); initializePropertyUI(2131034124, 2131034123, "android.app.extra.PROVISIONING_LOCAL_TIME"); initializePropertyUI(2131034126, 2131034125, "android.app.extra.PROVISIONING_LOCALE"); refreshMessageView(); /* Next we get the default NFC adapter for the Android device being used, and define CreateNdefMessageCallback() for that adapter, which is invoked when another NFC device capable of NDEF push (Android Beam) is within range. CreateNdefMessageCallback is an interface that has one abstract method that needs to be defined. That method, createNdefMessage, creates the message to be pushed. */ NfcAdapter.getDefaultAdapter(this).setNdefPushMessageCallback(new NfcAdapter.CreateNdefMessageCallback() { public NdefMessage createNdefMessage(NfcEvent paramAnonymousNfcEvent) { /* Here ndefMessage creates an output stream which contains the values from mProps. */ Log.d("DeviceProvisioningProgrammerSample", "Sending Nfc"); ByteArrayOutputStream localByteArrayOutputStream = new ByteArrayOutputStream(); try { DeviceProvisioningProgrammerSample.this.mProps.store(localByteArrayOutputStream, DeviceProvisioningProgrammerSample.this.getString(2130968578)); DeviceProvisioningProgrammerSample.this.mTextView.post(new Runnable() { public void run() { DeviceProvisioningProgrammerSample.this.refreshMessageView(); } }); /* Here NdefMessage is created containing an NdefRecord. The NdefRecord contains its record type, and a byte array derived from the mProps output stream. */ return new NdefMessage(new NdefRecord[] { NdefRecord.createMime("application/com.android.managedprovisioning", localByteArrayOutputStream.toByteArray()) }); } catch (IOException localIOException) { while (true) Log.e("DeviceProvisioningProgrammerSample", "io exception", localIOException); } } } , this, new Activity[0]); }
補足資料
高度な NFC では、さまざまなタグ技術の使用、NFC タグへの書き込み、フォアグラウンド ディスパッチなど、高度な NFC トピックについて説明します。
手動 DPC インストール方法
手動 DPC インストール プロビジョニング メソッドを使用してプロファイル オーナー モードを設定するには、ユーザーが Google Play から DPC をダウンロードしてインストールします。次に、DPC は、管理対象 Google アカウントのプロファイル所有者を設定する残りのプロセスをユーザーに通知します。
DPC は、仕事用プロファイルの作成前または作成後に、管理対象の Google アカウントを追加できます。たとえば、DPC では、最初に管理対象の Google アカウントを入力する代わりに、ユーザーの EMM 認証情報に基づいて仕事用プロファイルを作成できます。
プロファイル所有者モードを設定する
最初に管理対象の Google アカウントを追加してください
- ユーザーが Google Play から DPC をダウンロードしてインストールします。
- DPC は、
AccountManager.addAccount()
を使用して仕事用プロファイルを作成する前に、管理対象の Google アカウントを追加します。 - DPC が個人用プロファイルで実行され、
ACTION_PROVISION_MANAGED_PROFILE
を使用して仕事用プロファイルを作成するプロセスを開始します。— 仕事用プロファイルがプロビジョニングされます。
EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
— 言語 / 地域、Wi-Fi、メールアドレスなど、仕事用プロファイルに関する追加情報。
EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE
—新しい仕事用プロファイルに移行する認証済みアカウントの名前。 - 仕事用プロファイルの DPC がプロビジョニング プロセスを完了します。仕事用プロファイルが作成されると、DPC も仕事用プロファイル内で実行されます。仕事用プロファイルの DPC は、その管理対象 Google アカウントにポリシーを push し、デバイスが不正使用されていないことを確認してポリシーを強制適用(パスワードの要求など)することで、プロビジョニング プロセスを完了します。
- 仕事用プロファイルがプロビジョニングされると、DPC はブロードキャスト
ACTION_PROFILE_PROVISIONING_COMPLETE
を受け取ります。 - 個人プロフィールの DPC は無効になるか、ユーザーが削除する。

まず仕事用プロファイルを作成します
- ユーザーが Google Play から DPC をダウンロードしてインストールします。
- DPC が個人用プロファイルで実行され、
ACTION_PROVISION_MANAGED_PROFILE
を使用して仕事用プロファイルを作成するプロセスを開始します。— 仕事用プロファイルがプロビジョニングされます。
EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
—言語 / 地域、Wi-Fi、メールアドレスなどの仕事用プロファイルの追加情報。 - DPC は
AccountManager.addAccount()
を使用して管理対象の Google アカウントを追加します。 - DPC はブロードキャスト
ACTION_PROFILE_PROVISIONING_COMPLETE
を受信し、EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
を読み取ります。 - 仕事用プロファイルの DPC がプロビジョニング プロセスを完了します。仕事用プロファイルが作成されると、DPC も仕事用プロファイル内で実行されます。仕事用プロファイルの DPC は、その管理対象 Google アカウントにポリシーを push し、デバイスが不正使用されていないことを確認してポリシーを強制適用(パスワードの要求など)することで、プロビジョニング プロセスを完了します。
- DPC は
DevicePolicyManager.setProfileEnabled()
を使用して仕事用プロファイルを有効にします。 - 個人プロフィールの DPC は無効になるか、ユーザーが削除する。

以前のモードの設定
従来の運用モードは、デバイスの初期設定時、またはユーザーが [設定] > [アカウントを追加] で追加する際にプロビジョニングできます。managed Google Play を Google アカウントのあるユーザーが利用できるようにするための要件は次のとおりです。
- Google アカウントがマネージド Google ドメインの一部になっている。
- managed Google ドメインは、Google Play EMM API にバインドされた EMM を使用して、企業用に Android 用に設定されます。
従来のデバイスでのアプリ管理のみを行う場合は、DPC は不要です。その場合は、[設定] > [アカウントを追加] で Google アカウントを追加します。アプリの管理には、おすすめのアプリのキュレーション、限定公開アプリの利用、ライセンスの購入と配布が含まれます。
DPC に Google アカウントを追加するには:
- ユーザーが Google Play から DPC をダウンロードして起動します。
- DPC は
AccountManager.addAccount()
を使用して管理対象の Google アカウントを追加します。AccountManager.KEY_ACCOUNT_NAME
を使用して特定の Google アカウントを追加する実装例については、TestDPC をご覧ください。 - (省略可)DPC は自身をデバイス管理として設定します。DPC はデバイス管理者として、アプリ管理以外のデバイス管理機能を備えています。