DpcMigrationClient

interface DpcMigrationClient


用于发出 dpc 迁移相关请求的客户端。

摘要

公共函数

ListenableFuture<DpcMigrationAttempt?>
getMigrationAttempt(
    getMigrationAttemptRequest: GetDpcMigrationAttemptRequest
)

获取迁移尝试。

suspend DpcMigrationAttempt?
getMigrationAttemptAwait(
    getMigrationAttemptRequest: GetDpcMigrationAttemptRequest
)

获取迁移尝试。

ListenableFuture<List<DpcMigrationAttempt>>

返回所有迁移尝试的列表。

suspend List<DpcMigrationAttempt>

返回所有迁移尝试的列表。

ListenableFuture<DpcMigrationAttempt>
migrateDeviceManagementToAndroidManagementApi(
    notificationServiceComponentName: ComponentName,
    adminComponentName: ComponentName,
    migrationRequest: DpcMigrationRequest
)

将此设备迁移为由 Android Management API 管理。

suspend DpcMigrationAttempt
migrateDeviceManagementToAndroidManagementApiAwait(
    notificationServiceComponentName: ComponentName,
    adminComponentName: ComponentName,
    migrationRequest: DpcMigrationRequest
)

将此设备迁移为由 Android Management API 管理。

公共函数

getMigrationAttempt

fun getMigrationAttempt(
    getMigrationAttemptRequest: GetDpcMigrationAttemptRequest
): ListenableFuture<DpcMigrationAttempt?>

获取迁移尝试。

如果 GetDpcMigrationAttemptRequest 中未指定名称,则返回最新的 DpcMigrationAttempt

此方法只能由设备所有者或资料所有者,或者之前已迁移到 Android Management API 的设备所有者或资料所有者来调用。

返回
ListenableFuture<DpcMigrationAttempt?>

用于封装结果的 ListenableFuture。这可以是

  • 成功封装 DpcMigrationAttempt 的 Future(如果成功的话)。

  • 如果找不到 DpcMigrationAttempt,则成功的 Future 封装的 null。

  • 如果调用方不是设备所有者或资料所有者,或者之前已迁移到 Android Management API 的设备所有者或资料所有者,那么将来封装 SecurityException 失败。

  • 如果与 DPC 迁移相关的调用失败,可能会导致后续封装 DpcMigrationException 失败。异常的消息和子类型包含有关失败情况的更多详细信息。

getMigrationAttemptAwait

suspend fun getMigrationAttemptAwait(
    getMigrationAttemptRequest: GetDpcMigrationAttemptRequest
): DpcMigrationAttempt?

获取迁移尝试。

如果 GetDpcMigrationAttemptRequest 中未指定名称,则返回最新的 DpcMigrationAttempt

此方法只能由设备所有者或资料所有者,或者之前已迁移到 Android Management API 的设备所有者或资料所有者来调用。

返回
DpcMigrationAttempt?

请求的 DpcMigrationAttempt;如果找不到,则为 null

抛出
java.lang.SecurityException

如果调用方不是设备所有者或资料所有者,或者之前已迁移到 Android Management API 的设备所有者或资料所有者。

com.google.android.managementapi.dpcmigration.DpcMigrationException

如果与 dpc 迁移相关的调用失败。异常的消息和子类型包含有关失败情况的更多详细信息。

listMigrationAttempts

fun listMigrationAttempts(): ListenableFuture<List<DpcMigrationAttempt>>

返回所有迁移尝试的列表。

此方法只能由设备所有者或资料所有者,或者之前已迁移到 Android Management API 的设备所有者或资料所有者来调用。注意:更早的迁移尝试会被自动删除,并且不会返回。

返回
ListenableFuture<List<DpcMigrationAttempt>>

用于封装结果的 ListenableFuture。这可以是

  • 成功的 Future,其中包含一个 DpcMigrationAttempt 列表(如果成功的话)。

  • 如果调用方不是设备所有者或资料所有者,或者之前已迁移到 Android Management API 的设备所有者或资料所有者,那么将来封装 SecurityException 失败。

  • 如果与 DPC 迁移相关的调用失败,可能会导致后续封装 DpcMigrationException 失败。异常的消息和子类型包含有关失败情况的更多详细信息。

listMigrationAttemptsAwait

suspend fun listMigrationAttemptsAwait(): List<DpcMigrationAttempt>

返回所有迁移尝试的列表。

此方法只能由设备所有者或资料所有者,或者之前已迁移到 Android Management API 的设备所有者或资料所有者来调用。注意:更早的迁移尝试会被自动删除,并且不会返回。

抛出
java.lang.SecurityException

如果调用方不是设备所有者或资料所有者,或者之前已迁移到 Android Management API 的设备所有者或资料所有者。

com.google.android.managementapi.dpcmigration.DpcMigrationException

如果与 dpc 迁移相关的调用失败。异常的消息和子类型包含有关失败情况的更多详细信息。

migrateDeviceManagementToAndroidManagementApi

fun migrateDeviceManagementToAndroidManagementApi(
    notificationServiceComponentName: ComponentName,
    adminComponentName: ComponentName,
    migrationRequest: DpcMigrationRequest
): ListenableFuture<DpcMigrationAttempt>

将此设备迁移为由 Android Management API 管理。

迁移完成后,发起调用的应用会失去设备所有者或资料所有者权限,因为这些权限会转移到 Android Device Policy。

警告:此操作无法撤消!当 Android Device Policy 收到请求并完成对迁移令牌的初步检查后,返回的 ListenableFuture 便会完成。如果失败,ListenableFuture 将封装一个 Exception

此方法只能由设备所有者或资料所有者调用。在 Android 10 及更低版本中,不得在同时具有设备所有者和资料所有者的设备上调用此方法。

如果个人拥有的设备上已配置任何 Wi-Fi 网络,则已配置的 Wi-Fi 网络必须由个人资料所有者(Android 12 除外)在 DpcMigrationRequest 中传递。这些代码不得在公司自有设备上传入。请注意,在设备管理迁移到 Android Device Policy 之前,系统会移除这些 Wi-Fi 网络。如果移除网络失败,迁移也会失败,而且由于移除网络不是原子操作,某些网络可能已被移除。

在工作资料运行 Android 12 的个人所有设备上,由调用 DPC 配置的所有 Wi-Fi 网络在设备管理迁移到 Android Device Policy 之前都会被移除,无论 migrationRequest 中传递的 Wi-Fi 网络是什么。

参数
notificationServiceComponentName: ComponentName

扩展 NotificationReceiverService 的服务的 ComponentName。它必须是属于调用方应用的有效组件,且已在清单中导出,否则系统会抛出 IllegalArgumentException

adminComponentName: ComponentName

调用 DPC 的管理员 DeviceAdminReceiverComponentName

migrationRequest: DpcMigrationRequest

包含迁移令牌和已配置的 Wi-Fi 网络的 DpcMigrationRequest。仅当调用方是个人所有设备上的个人资料所有者,且已配置任何网络时,才需要使用后者。

返回
ListenableFuture<DpcMigrationAttempt>

用于封装结果的 ListenableFuture。这可以是

migrateDeviceManagementToAndroidManagementApiAwait

suspend fun migrateDeviceManagementToAndroidManagementApiAwait(
    notificationServiceComponentName: ComponentName,
    adminComponentName: ComponentName,
    migrationRequest: DpcMigrationRequest
): DpcMigrationAttempt

将此设备迁移为由 Android Management API 管理。

迁移完成后,发起调用的应用会失去设备所有者或资料所有者权限,因为这些权限会转移到 Android Device Policy。

警告:此操作无法撤消!当 Android Device Policy 收到请求并完成对迁移令牌的初步检查后,系统会返回此挂起函数。如果失败,系统会抛出 Exception

此方法只能由设备所有者或资料所有者调用。在 Android 10 及更低版本中,不得在同时具有设备所有者和资料所有者的设备上调用此方法。

如果个人拥有的设备上已配置任何 Wi-Fi 网络,则已配置的 Wi-Fi 网络必须由个人资料所有者(Android 12 除外)在 DpcMigrationRequest 中传递。这些代码不得在公司自有设备上传入。请注意,在设备管理迁移到 Android Device Policy 之前,系统会移除这些 Wi-Fi 网络。如果移除网络失败,迁移也会失败,而且由于移除网络不是原子操作,某些网络可能已被移除。

在工作资料运行 Android 12 的个人所有设备上,由调用 DPC 配置的所有 Wi-Fi 网络在设备管理迁移到 Android Device Policy 之前都会被移除,无论 migrationRequest 中传递的 Wi-Fi 网络是什么。

参数
notificationServiceComponentName: ComponentName

扩展 NotificationReceiverService 的服务的 ComponentName。它必须是属于调用方应用的有效组件,且已在清单中导出,否则系统会抛出 IllegalArgumentException

adminComponentName: ComponentName

调用 DPC 的管理员 DeviceAdminReceiverComponentName

migrationRequest: DpcMigrationRequest

包含迁移令牌和已配置的 Wi-Fi 网络的 DpcMigrationRequest。仅当调用方是个人所有设备上的个人资料所有者,且已配置任何网络时,才需要使用后者。

返回
DpcMigrationAttempt

DpcMigrationException 替换为迁移的当前状态(如果成功)。

抛出
java.lang.SecurityException

如果调用方不是设备所有者或资料所有者。

java.lang.IllegalArgumentException

如果迁移令牌为空,或者如果notificationServiceComponentName未引用扩展NotificationReceiverService(清单中已导出的组件)的有效组件,或者adminComponentName不是属于当前软件包的活跃管理员。

com.google.android.managementapi.dpcmigration.DpcMigrationException

如果与 dpc 迁移相关的调用失败。异常的消息和子类型包含有关失败情况的更多详细信息。