カスタム DPC によってすでに管理されているデバイスを Android Device Policy(ADP)に移行して、Android Management API を利用できます。
前提条件
- デバイスがカスタム DPC を使用して EMM によってすでに管理されていること。
- カスタム DPC が AMAPI SDK と統合されていること。
- デバイスが Google Play EMM API に登録されていること。
- デバイスが managed Google Play アカウント エンタープライズ に属していること。
- デバイスで Android 9 以降が実行されていること。
- 会社所有デバイスの仕事用プロファイルの場合、デバイスで Android 11 以降が実行されている必要があります。
カスタム DPC で AMAPI SDK と統合する
移行プロセスでは、カスタム DPC アプリケーションで AMAPI SDK を統合する必要があります。このライブラリとアプリケーションへの追加方法について詳しくは、AMAPI SDK 統合ガイドをご覧ください。
デバイスを移行する手順
- デバイスが AMAPI に移行された後に使用されるポリシーを設定します。ユーザー エクスペリエンスを向上させるため、これは DPC によってデバイスにすでに適用されているポリシーと同等である必要があります。AMAPI のポリシーは、デバイスが Play EMM API で属しているのと同じ企業に属している必要があります。特定の企業は、AMAPI と Google Play EMM API の両方で同じ名前になります。
- `
enterprises.migrationTokens.create` を呼び出して、デバイスの移行トークン を作成します。 - この移行トークンの
valueを カスタム DPC に送信します。 - Play EMM API を使用して、Android Device Policy がデバイスにインストールされていることを確認します。
DpcMigrationClientFactoryを使用してDpcMigrationClientを作成します。DpcMigrationClientでmigrateDeviceManagementToAndroidManagementApiメソッドを呼び出します。 これで移行が完了します。deviceStateがACTIVEに変わり、Pub/Sub チャンネルを介してSTATUS_REPORTメッセージが届きます。
移行が完了すると、呼び出し元のアプリはデバイス所有者またはプロファイル所有者の権限を失います。これは、これらの権限が Android Device Policy に転送されるためです。このプロセスは、次のシーケンス図で表すことができます。

注: 移行を開始するには、デバイスがインターネットに接続されている必要があります。このプロセスは、移行プロセス中のネットワーク切断に耐えられるように設計されています。そのため、ネットワーク接続を必要とする主要なオペレーションは、DPC から Android Device Policy へのデバイス所有者またはプロファイル所有者の権限の実際の転送が行われる前に完了します。
移行トークン
移行トークンは、カスタム DPC によって管理されている特定のデバイスを移行する意向を示すために、EMM サーバーによってリクエストされます。移行トークンは、移行が正常に完了するか、有効期限が切れるまで使用できます。
カスタム DPC の統合
まず、トークンと、必要に応じて構成済みの Wi-Fi ネットワークのリストをビルダーに渡して、DpcMigrationRequest を作成する必要があります。
// Create a DpcMigrationRequest
DpcMigrationRequest request =
DpcMigrationRequest.builder()
.setMigrationToken(token)
.build();
次に、DpcMigrationClient を取得し、
移行プロセスを
migrateDeviceManagementToAndroidManagementApi で開始します。
// Create a DpcMigrationClient
DpcMigrationClient dpcMigrationClient = DpcMigrationClientFactory.create(context);
try {
// Use helper function to retrieve Admin component name
var adminComponentName = getAdminComponent(context);
ListenableFuture<DpcMigrationAttempt> futureAttempt =
dpcMigrationClient.migrateDeviceManagementToAndroidManagementApi(
new ComponentName(context, DpcMigrationNotificationReceiver.class),
adminComponentName,
request);
// handle futureAttempt
} catch (RuntimeException e) {
// send failure feedback: "Error: " + e
}
NotificationReceiverService を設定して移行を追跡する
カスタム DPC に NotificationReceiverService
を実装します。
移行プロセスは、デバイス上の
DpcMigrationAttemptを介して追跡されます。
migrateDeviceManagementToAndroidManagementApi によって返されたものを直接使用することも、
getMigrationAttempt メソッドと
listMigrationAttempts メソッドを使用して
移行試行を取得して一覧表示することもできます。
// Passing an empty name, we retrieve the last attempt
var request = GetDpcMigrationAttemptRequest.builder().build();
var attempt = client.getMigrationAttempt(request);
必要に応じて、DpcMigrationListener を使用して
NotificationReceiverService を設定し、
DpcMigrationAttempt のステータス更新をリッスンできます。
// DpcMigrationNotificationReceiver for callback handling
public class DpcMigrationNotificationReceiver extends NotificationReceiverService
implements DpcMigrationListener {
@Override
protected DpcMigrationListener getDpcMigrationListener() {
return this;
}
@Override
public void onMigrationStateChanged(DpcMigrationAttempt migrationAttempt) {
// send success feedback
}
}
Wi-Fi ネットワークを処理する
カスタム DPC によって管理されている Wi-Fi ネットワークがある場合、AMAPI ONC ポリシー が AMAPI がこれらのネットワークをスムーズに管理を開始するには、これらのネットワークの構成と一致している必要があります 。DPC 移行と Wi-Fi 管理の連携は、管理モードによって異なります。
フルマネージド デバイスと会社所有デバイスの仕事用プロファイル
移行中、Android Device Policy は、ポリシーで構成された Wi-Fi ネットワークが、デバイスで構成された Wi-Fi ネットワークと同じ SSID とセキュリティ タイプを持っている場合、その Wi-Fi ネットワークは一致する構成済みの Wi-Fi ネットワークと同一であると想定します。したがって、カスタム DPC によって構成された Wi-Fi ネットワークは、ネットワークに対応する ONC ポリシーが変更されるまで、移行後も変更されません。ただし、移行後にカスタム DPC がアンインストールされると、カスタム DPC によって構成された Wi-Fi ネットワークは自動的に削除されます。Android Device Policy は引き続きポリシーを適用し、これらのネットワークがポリシーで構成されている場合は、ポリシーで構成されているネットワークが通常どおりに追加されます。
個人所有デバイスの仕事用プロファイル
技術的な理由により、Android Device Policy がこれらの Wi-Fi ネットワークの管理を開始するには、カスタム DPC によって構成された Wi-Fi ネットワークをカスタム DPC で削除する必要があります。AMAPI SDK はこれを処理し、カスタム DPC から Android Device Policy に所有権を転送する前に、このような Wi-Fi ネットワークを削除しますが、カスタム DPC がこれらのネットワークに関する情報を渡す必要があります。DpcMigrationRequest移行後、ポリシーで構成されたネットワークは通常どおりに追加されるため、カスタム DPC によって追加されたネットワークもポリシーで構成することをおすすめします。
注意すべき点がいくつかあります。
- アクティブなネットワークがカスタム DPC によって構成された Wi-Fi ネットワークの場合、移行中にデバイスが一時的にオフラインになることがあります。
- `DpcMigrationRequest` には、カスタム DPC によって構成された Wi-Fi ネットワークのみを渡す必要があります。そうしないと、
AMAPI SDK でネットワークを削除できない場合(ユーザーが追加した Wi-Fi ネットワークなど)、移行は失敗します。
DpcMigrationRequest - Wi-Fi ネットワークは、カスタム DPC が個人所有デバイスの
プロファイル所有者である場合にのみ
DpcMigrationRequestで渡す必要があります。そうしないと、移行は失敗します。 - 技術的な理由により、Android 12 は例外的なケースです。ネットワーク
DpcMigrationRequestで渡されたネットワークは無視され、カスタム DPC によって構成されたすべての Wi-Fi ネットワークが自動的に削除されます。さらに、個人所有デバイスの仕事用プロファイルの場合、カスタム DPC が Android 12 でACCESS_WIFI_STATE権限を持っている必要があります。そうしないと、移行は失敗します。
注意点
この機能に関する注意点は次のとおりです。
企業固有の ID
Android 12 以降の仕事用プロファイルの場合、企業固有の ID
DevicePolicyManager.getEnrollmentSpecificIdからアクセスできますが、
移行時に変更されません。ただし、Android Device Policy によって管理されている仕事用プロファイルがデバイスで再度作成された場合(以前のプロファイルを削除した後や、デバイスを初期状態にリセットした後など)、その時点で企業固有の ID が変更されます。
フルマネージド デバイスの仕事用プロファイル
この機能は、Android 9 または 10 を実行している仕事用プロファイルがあるフルマネージド デバイスではサポートされていません。これらのデバイスの移行は試行しないでください。エラーが発生するかどうかに関係なく、このようなデバイスは DPC 移行の対象外です。
RESET_PASSWORD コマンド
デバイスにロック画面のパスワードがある場合、RESET_PASSWORD コマンド
は、移行後にユーザーが認証情報
(PIN の再入力など)を確認した後にのみ成功します。デバイスにロック画面のパスワードがない場合は、移行直後に RESET_PASSWORD コマンドを使用できます。