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。

  • 封装了失败的 future,以防调用者不是设备所有者或资料所有者,或者不是迁移到 Android Management API 的之前的设备所有者或资料所有者。SecurityException

  • 封装 DpcMigrationException 的失败 future(如果 DPC 迁移相关调用失败)。消息和异常的子类型包含有关失败的更多详细信息。

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 列表。

  • 封装了失败的 future,以防调用者不是设备所有者或资料所有者,或者不是迁移到 Android Management API 的之前的设备所有者或资料所有者。SecurityException

  • 封装 DpcMigrationException 的失败 future(如果 DPC 迁移相关调用失败)。消息和异常的子类型包含有关失败的更多详细信息。

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 网络,则必须由资料所有者在 DpcMigrationRequest 中传递已配置的 Wi-Fi 网络(Android 12 除外)。不得在公司自有设备上传递这些参数。请注意,这些 WLAN 网络将在设备管理迁移到 Android 设备政策之前移除。如果无法移除某个网络,迁移也会失败。由于移除网络不是原子操作,因此可能已移除部分网络。

在搭载 Android 12 的个人自带设备上,无论在 migrationRequest 中传递了哪些 Wi-Fi 网络,在设备管理迁移到 Android Device Policy 之前,调用 DPC 配置的所有 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 网络,则必须由资料所有者在 DpcMigrationRequest 中传递已配置的 Wi-Fi 网络(Android 12 除外)。不得在公司自有设备上传递这些参数。请注意,这些 WLAN 网络将在设备管理迁移到 Android 设备政策之前移除。如果无法移除某个网络,迁移也会失败。由于移除网络不是原子操作,因此可能已移除部分网络。

在搭载 Android 12 的个人自带设备上,无论在 migrationRequest 中传递了哪些 Wi-Fi 网络,在设备管理迁移到 Android Device Policy 之前,调用 DPC 配置的所有 Wi-Fi 网络都会被移除。

参数
notificationServiceComponentName: ComponentName

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

adminComponentName: ComponentName

调用 DPC 的管理员 DeviceAdminReceiverComponentName

migrationRequest: DpcMigrationRequest

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

返回
DpcMigrationAttempt

如果迁移成功,则为 DpcMigrationException,其中包含迁移的当前状态。

抛出
java.lang.SecurityException

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

kotlin.IllegalArgumentException

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

com.google.android.managementapi.dpcmigration.DpcMigrationException

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