public class DeviceAdminReceiver
extends BroadcastReceiver
java.lang.Object | ||
↳ | android.content.BroadcastReceiver | |
↳ | android.app.admin.DeviceAdminReceiver |
实现设备管理组件的基类。 该类为解释系统发送的原始意图操作提供了便利。
回调方法,如基础BroadcastReceiver.onReceive()
方法,发生在进程的主线程上。 因此长时间运行的操作必须在另一个线程上完成。 请注意,因为接收者一旦从其接收函数返回就完成了,这样的长时间运行应该可以在Service
完成。
将DeviceAdmin子类作为接收方发布时,必须处理ACTION_DEVICE_ADMIN_ENABLED
并需要BIND_DEVICE_ADMIN
权限。 典型的清单条目将如下所示:
<receiver android:name=".app.DeviceAdminSample$DeviceAdminSampleReceiver" android:label="@string/sample_device_admin" android:description="@string/sample_device_admin_description" android:permission="android.permission.BIND_DEVICE_ADMIN"> <meta-data android:name="android.app.device_admin" android:resource="@xml/device_admin_sample" /> <intent-filter> <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> </intent-filter> </receiver> <receiver android:name=".app.DeviceAdminSample$DeviceAdminSampleReceiver2" android:label="@string/sample_device_admin2" android:description="@string/sample_device_admin_description2" android:permission="android.permission.BIND_DEVICE_ADMIN"> <meta-data android:name="android.app.device_admin" android:resource="@xml/device_admin_sample" /> <intent-filter> <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> </intent-filter> </receiver>
此处引用的元数据提供了特定于设备管理员的附加信息,由DeviceAdminInfo
类解析。 一个典型的文件是:
<device-admin xmlns:android="http://schemas.android.com/apk/res/android"> <uses-policies> <limit-password /> <watch-login /> <reset-password /> <force-lock /> <wipe-data /> <expire-password /> <encrypted-storage /> <disable-camera /> <disable-keyguard-features /> </uses-policies> </device-admin>
有关设备管理的更多信息,请阅读 Device Administration开发人员指南。
Constants |
|
---|---|
String |
ACTION_DEVICE_ADMIN_DISABLED 操作在用户禁用时发送给设备管理员。 |
String |
ACTION_DEVICE_ADMIN_DISABLE_REQUESTED 当用户请求将其禁用时,但在此之前已将其发送到设备管理员的操作。 |
String |
ACTION_DEVICE_ADMIN_ENABLED 这是设备管理员必须执行以允许管理设备的主要操作。 |
String |
ACTION_LOCK_TASK_ENTERING 发送给设备管理员的动作通知设备正在进入锁定任务模式。 |
String |
ACTION_LOCK_TASK_EXITING 发送给设备管理员的动作通知设备正在退出锁定任务模式。 |
String |
ACTION_PASSWORD_CHANGED 当用户更改其设备密码或配置文件质询时发送给设备管理员的操作。 |
String |
ACTION_PASSWORD_EXPIRING 当设备或配置文件质询密码过期时,操作会定期发送给设备管理员。 |
String |
ACTION_PASSWORD_FAILED 当用户输入错误的设备或配置文件质询密码时,发送给设备管理员的操作。 |
String |
ACTION_PASSWORD_SUCCEEDED 当用户成功输入其设备或配置文件质询密码后,发送给设备管理员的操作失败一次或多次后。 |
String |
ACTION_PROFILE_PROVISIONING_COMPLETE 广播动作:发送此广播以指示托管配置文件或受管设备的配置已成功完成。 |
int |
BUGREPORT_FAILURE_FAILED_COMPLETING Bugreport完成过程失败。 |
int |
BUGREPORT_FAILURE_FILE_NO_LONGER_AVAILABLE Bugreport已创建,但不再可用于收集。 |
String |
DEVICE_ADMIN_META_DATA DevicePolicy组件发布有关其自身的信息的名称。 |
String |
EXTRA_DISABLE_WARNING 一个CharSequence可以显示给用户,告知他们禁用管理员的影响。 |
String |
EXTRA_LOCK_TASK_PACKAGE 包含进入锁定任务模式的软件包名称的字符串。 |
Public constructors |
|
---|---|
DeviceAdminReceiver() |
Public methods |
|
---|---|
DevicePolicyManager |
getManager(Context context) 检索此管理员的DevicePolicyManager界面以使用系统。 |
ComponentName |
getWho(Context context) 检索描述此设备管理员是谁的ComponentName,用于需要管理员标识自身的 |
void |
onBugreportFailed(Context context, Intent intent, int failureCode) 当bugreport收集流程失败时调用。 |
void |
onBugreportShared(Context context, Intent intent, String bugreportHash) 当bugreport已与设备管理员应用程序共享时调用。 |
void |
onBugreportSharingDeclined(Context context, Intent intent) 共享错误报告时调用的设备已被用户取消。 |
String |
onChoosePrivateKeyAlias(Context context, Intent intent, int uid, Uri uri, String alias) 允许此接收方为私钥和证书对选择别名以进行身份验证。 |
CharSequence |
onDisableRequested(Context context, Intent intent) 当用户要求禁用管理员时调用,作为接收 |
void |
onDisabled(Context context, Intent intent) 在管理员被禁用之前调用,作为接收 |
void |
onEnabled(Context context, Intent intent) 在管理员第一次启用之后调用,由于收到 |
void |
onLockTaskModeEntering(Context context, Intent intent, String pkg) 当设备进入锁定任务模式时调用。 |
void |
onLockTaskModeExiting(Context context, Intent intent) 当设备正在退出锁定任务模式时调用。 |
void |
onPasswordChanged(Context context, Intent intent) 在用户更改其设备或配置文件质询密码之后调用,作为接收 |
void |
onPasswordExpiring(Context context, Intent intent) 当设备或配置文件质询密码即将过期或已过期时,定期调用。 |
void |
onPasswordFailed(Context context, Intent intent) 在用户输入设备或配置文件质询密码失败后调用,作为接收 |
void |
onPasswordSucceeded(Context context, Intent intent) 在用户成功输入其设备或配置文件质询密码后调用,作为接收 |
void |
onProfileProvisioningComplete(Context context, Intent intent) 调用托管配置文件或受管设备时调用已成功完成。 |
void |
onReadyForUserInitialization(Context context, Intent intent) 此方法在API级别24中已弃用。请勿使用 |
void |
onReceive(Context context, Intent intent) 拦截标准设备管理员广播。 |
void |
onSecurityLogsAvailable(Context context, Intent intent) 在可以检索新批安全日志时调用。 |
void |
onSystemUpdatePending(Context context, Intent intent, long receivedTime) 允许在系统更新服务提供有关未决系统更新的信息时通知接收方。 |
Inherited methods |
|
---|---|
From class android.content.BroadcastReceiver
|
|
From class java.lang.Object
|
String ACTION_DEVICE_ADMIN_DISABLED
操作在用户禁用时发送给设备管理员。 返回后,应用程序不再有权访问受保护的设备策略管理器API。 你通常会在onDisabled(Context, Intent)
处理这个。 请注意,此操作将发送给接收方,而不管它是否明确列在其意向过滤器中。
常量值:“android.app.action.DEVICE_ADMIN_DISABLED”
String ACTION_DEVICE_ADMIN_DISABLE_REQUESTED
当用户请求将其禁用时,但在此之前已将其发送到设备管理员的操作。 这使您有机会通过在结果Intent中设置额外字段EXTRA_DISABLE_WARNING
,向用户提供关于禁用管理员的影响的消息。 如果未设置,则不会显示警告。 如果设置,给定的文本将在用户禁用管理员之前显示给用户。
常量值:“android.app.action.DEVICE_ADMIN_DISABLE_REQUESTED”
String ACTION_DEVICE_ADMIN_ENABLED
这是设备管理员必须执行以允许管理设备的主要操作。 这将在用户启用它进行管理时设置给接收方。 您通常会在onEnabled(Context, Intent)
处理此onEnabled(Context, Intent)
。 为了得到支持,接收器还必须要求BIND_DEVICE_ADMIN
权限,以便其他应用程序不能滥用它。
常量值:“android.app.action.DEVICE_ADMIN_ENABLED”
String ACTION_LOCK_TASK_ENTERING
发送给设备管理员的动作通知设备正在进入锁定任务模式。 额外的EXTRA_LOCK_TASK_PACKAGE
将描述使用锁定任务模式的软件包。
主叫设备管理员必须是设备所有者或配置文件所有者才能接收此广播。
也可以看看:
常量值:“android.app.action.LOCK_TASK_ENTERING”
String ACTION_LOCK_TASK_EXITING
发送给设备管理员的动作通知设备正在退出锁定任务模式。
主叫设备管理员必须是设备所有者或配置文件所有者才能接收此广播。
也可以看看:
常量值:“android.app.action.LOCK_TASK_EXITING”
String ACTION_PASSWORD_CHANGED
当用户更改其设备密码或配置文件质询时发送给设备管理员的操作。 您可以在此处使用DevicePolicyManager.isActivePasswordSufficient()
检查新密码的DevicePolicyManager.isActivePasswordSufficient()
。 您通常会在onPasswordChanged(Context, Intent)
处理此onPasswordChanged(Context, Intent)
。
主叫设备管理员必须请求 USES_POLICY_LIMIT_PASSWORD
接收此广播。
常量值:“android.app.action.ACTION_PASSWORD_CHANGED”
String ACTION_PASSWORD_EXPIRING
当设备或配置文件质询密码过期时,操作会定期发送给设备管理员。 你通常会在onPasswordExpiring(Context, Intent)
处理这个。
主叫设备管理员必须请求 USES_POLICY_EXPIRE_PASSWORD
接收此广播。
常量值:“android.app.action.ACTION_PASSWORD_EXPIRING”
String ACTION_PASSWORD_FAILED
当用户输入错误的设备或配置文件质询密码时,发送给设备管理员的操作。 您可以在此处检查DevicePolicyManager.getCurrentFailedPasswordAttempts()
已失败的密码尝试次数。 您通常会在onPasswordFailed(Context, Intent)
处理此onPasswordFailed(Context, Intent)
。
主叫设备管理员必须请求 USES_POLICY_WATCH_LOGIN
接收此广播。
常量值:“android.app.action.ACTION_PASSWORD_FAILED”
String ACTION_PASSWORD_SUCCEEDED
当用户成功输入其设备或配置文件质询密码后,发送给设备管理员的操作失败一次或多次后。 你通常会在onPasswordSucceeded(Context, Intent)
处理这个onPasswordSucceeded(Context, Intent)
。
主叫设备管理员必须请求 USES_POLICY_WATCH_LOGIN
接收此广播。
常量值:“android.app.action.ACTION_PASSWORD_SUCCEEDED”
String ACTION_PROFILE_PROVISIONING_COMPLETE
广播动作:发送此广播以指示托管配置文件或受管设备的配置已成功完成。
广播仅限于由请求供应的应用程序管理的配置文件。 在设备所有者情况下,配置文件是主要用户。 广播还将限制在启动供应过程的原始意图或NFC凸点中指定的DeviceAdminReceiver
组件(请参阅DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE
)。
监听此意图的设备管理应用程序可以通过分别调用isDeviceOwnerApp(String)
和isProfileOwnerApp(String)
来查明是否为设备所有者或配置文件所有者案例设置了设备。 您通常会在onProfileProvisioningComplete(Context, Intent)
处理此onProfileProvisioningComplete(Context, Intent)
。
输入:没有。
输出:没有
常量值:“android.app.action.PROFILE_PROVISIONING_COMPLETE”
int BUGREPORT_FAILURE_FAILED_COMPLETING
Bugreport完成过程失败。
如果收到此错误代码,则可以重试错误报告的请求。
常量值:0(0x00000000)
int BUGREPORT_FAILURE_FILE_NO_LONGER_AVAILABLE
Bugreport已创建,但不再可用于收集。
出现此错误的原因可能是设备的用户在创建后长时间未同意分享错误报告。
如果收到此错误代码,则可以重试错误报告的请求。
常数值:1(0x00000001)
String DEVICE_ADMIN_META_DATA
DevicePolicy组件发布有关其自身的信息的名称。 此元数据必须引用包含设备管理标签的XML资源。
常量值:“android.app.device_admin”
String EXTRA_DISABLE_WARNING
一个CharSequence可以显示给用户,告知他们禁用管理员的影响。
常量值:“android.app.extra.DISABLE_WARNING”
String EXTRA_LOCK_TASK_PACKAGE
包含进入锁定任务模式的软件包名称的字符串。
也可以看看:
常量值:“android.app.extra.LOCK_TASK_PACKAGE”
DevicePolicyManager getManager (Context context)
检索此管理员的DevicePolicyManager界面以使用系统。
Parameters | |
---|---|
context |
Context
|
Returns | |
---|---|
DevicePolicyManager |
ComponentName getWho (Context context)
检索描述此设备管理员是谁的ComponentName,用于需要管理员标识自身的 DevicePolicyManager
API。
Parameters | |
---|---|
context |
Context
|
Returns | |
---|---|
ComponentName |
void onBugreportFailed (Context context, Intent intent, int failureCode)
当bugreport收集流程失败时调用。
此回调仅适用于设备所有者。
Parameters | |
---|---|
context |
Context : The running context as per onReceive(Context, Intent) . |
intent |
Intent : The received intent as per onReceive(Context, Intent) . |
failureCode |
int : int containing failure code. One of BUGREPORT_FAILURE_FAILED_COMPLETING or BUGREPORT_FAILURE_FILE_NO_LONGER_AVAILABLE |
void onBugreportShared (Context context, Intent intent, String bugreportHash)
当bugreport已与设备管理员应用程序共享时调用。
此回调仅适用于设备所有者。
Parameters | |
---|---|
context |
Context : The running context as per onReceive(Context, Intent) . |
intent |
Intent : The received intent as per onReceive(Context, Intent) . Contains the URI of the bugreport file (with MIME type "application/vnd.android.bugreport"), that can be accessed by calling getData() |
bugreportHash |
String : SHA-256 hash of the bugreport file. |
void onBugreportSharingDeclined (Context context, Intent intent)
共享错误报告时调用的设备已被用户取消。
此回调仅适用于设备所有者。
Parameters | |
---|---|
context |
Context : The running context as per onReceive(Context, Intent) . |
intent |
Intent : The received intent as per onReceive(Context, Intent) . |
String onChoosePrivateKeyAlias (Context context, Intent intent, int uid, Uri uri, String alias)
允许此接收方为私钥和证书对选择别名以进行身份验证。 如果此方法返回null,将显示默认的Activity
,允许用户选择私钥和证书对。
Parameters | |
---|---|
context |
Context : The running context as per onReceive(Context, Intent) . |
intent |
Intent : The received intent as per onReceive(Context, Intent) . |
uid |
int : The uid asking for the private key and certificate pair. |
uri |
Uri : The URI to authenticate, may be null. |
alias |
String : The alias preselected by the client, or null. |
Returns | |
---|---|
String |
The private key alias to return and grant access to. |
CharSequence onDisableRequested (Context context, Intent intent)
当用户要求禁用管理员时调用,作为接收ACTION_DEVICE_ADMIN_DISABLE_REQUESTED
的结果,让您有机会向他们发送警告消息。 该消息作为结果返回; 如果返回null(默认实现),则不会显示任何消息。
Parameters | |
---|---|
context |
Context : The running context as per onReceive(Context, Intent) . |
intent |
Intent : The received intent as per onReceive(Context, Intent) . |
Returns | |
---|---|
CharSequence |
Return the warning message to display to the user before being disabled; if null is returned, no message is displayed. |
void onDisabled (Context context, Intent intent)
在管理员被禁用之前调用,作为接收ACTION_DEVICE_ADMIN_DISABLED
的结果。 返回后,您不能再使用DevicePolicyManager
API的受保护部分。
Parameters | |
---|---|
context |
Context : The running context as per onReceive(Context, Intent) . |
intent |
Intent : The received intent as per onReceive(Context, Intent) . |
void onEnabled (Context context, Intent intent)
在管理员第一次启用之后调用,作为接收ACTION_DEVICE_ADMIN_ENABLED
的结果。 此时您可以使用DevicePolicyManager
来设置您所需的策略。
如果管理员由设备所有者激活,则该意图可能包含与用户设置相关的私人额外内容。
Parameters | |
---|---|
context |
Context : The running context as per onReceive(Context, Intent) . |
intent |
Intent : The received intent as per onReceive(Context, Intent) . |
void onLockTaskModeEntering (Context context, Intent intent, String pkg)
当设备进入锁定任务模式时调用。
Parameters | |
---|---|
context |
Context : The running context as per onReceive(Context, Intent) . |
intent |
Intent : The received intent as per onReceive(Context, Intent) . |
pkg |
String : If entering, the authorized package using lock task mode, otherwise null. |
void onLockTaskModeExiting (Context context, Intent intent)
当设备正在退出锁定任务模式时调用。
Parameters | |
---|---|
context |
Context : The running context as per onReceive(Context, Intent) . |
intent |
Intent : The received intent as per onReceive(Context, Intent) . |
void onPasswordChanged (Context context, Intent intent)
在用户更改设备或配置文件质询密码后调用,因为收到ACTION_PASSWORD_CHANGED
。 此时,您可以使用getPasswordQuality(android.content.ComponentName)
来检索活动密码特征。
Parameters | |
---|---|
context |
Context : The running context as per onReceive(Context, Intent) . |
intent |
Intent : The received intent as per onReceive(Context, Intent) . |
void onPasswordExpiring (Context context, Intent intent)
当设备或配置文件质询密码即将过期或已过期时,定期调用。 通常会在这些时间调用:在设备启动时,密码过期前每天一次,以及密码过期时。
如果密码未被用户更新,则此方法将继续每天调用一次,直到密码更改或设备管理员禁用密码过期。
管理员通常会发布通知,要求用户更改密码以响应此呼叫。 实际的密码到期时间可通过致电getPasswordExpiration(ComponentName)
管理员在收到 onPasswordChanged(Context, Intent)
时应确保记下为响应此呼叫而发布的任何通知。
Parameters | |
---|---|
context |
Context : The running context as per onReceive(Context, Intent) . |
intent |
Intent : The received intent as per onReceive(Context, Intent) . |
void onPasswordFailed (Context context, Intent intent)
在用户输入设备或配置文件质询密码失败后调用,作为接收ACTION_PASSWORD_FAILED
的结果。 此时,您可以使用getCurrentFailedPasswordAttempts()
来检索失败的密码尝试次数。
Parameters | |
---|---|
context |
Context : The running context as per onReceive(Context, Intent) . |
intent |
Intent : The received intent as per onReceive(Context, Intent) . |
void onPasswordSucceeded (Context context, Intent intent)
在用户成功输入其设备或配置文件质询密码后调用,作为接收ACTION_PASSWORD_SUCCEEDED
的结果。 这只会在他们以前失败后第一次获得成功。
Parameters | |
---|---|
context |
Context : The running context as per onReceive(Context, Intent) . |
intent |
Intent : The received intent as per onReceive(Context, Intent) . |
void onProfileProvisioningComplete (Context context, Intent intent)
调用托管配置文件或受管设备时调用已成功完成。
至于这个回调执行的先决条件DeviceAdminReceiver
有权宣布意图过滤器ACTION_PROFILE_PROVISIONING_COMPLETE
。 其组件还必须在ACTION_PROVISION_MANAGED_PROFILE
意图的EXTRA_DEVICE_ADMIN
中指定,该意图启动了管理配置。
配置托管配置文件完成后,托管配置文件将隐藏,直到配置文件所有者调用{DevicePolicyManager#setProfileEnabled(ComponentName admin)}。 通常情况下,配置文件所有者将在配置文件完成任何其他设置后启用配置文件,例如通过使用AccountManager
添加帐户并呼叫apis将配置文件置于所需状态。
请注意,配置完成时无需等待任何服务器交互,因此配置文件所有者需要等待数据在需要时可用(例如Android设备id或由服务器交互设置的其他数据)。
Parameters | |
---|---|
context |
Context : The running context as per onReceive(Context, Intent) . |
intent |
Intent : The received intent as per onReceive(Context, Intent) . |
void onReadyForUserInitialization (Context context, Intent intent)
此方法在API级别24中已弃用。
不使用
在调配受管设备期间调用以允许设备初始化程序执行用户设置步骤。
Parameters | |
---|---|
context |
Context : The running context as per onReceive(Context, Intent) . |
intent |
Intent : The received intent as per onReceive(Context, Intent) . |
void onReceive (Context context, Intent intent)
拦截标准设备管理员广播。 实施不应该重写此方法; 最好为每个动作实施便利回调。
Parameters | |
---|---|
context |
Context : The Context in which the receiver is running. |
intent |
Intent : The Intent being received. |
void onSecurityLogsAvailable (Context context, Intent intent)
在可以检索新批安全日志时调用。
此回调仅适用于设备所有者。
Parameters | |
---|---|
context |
Context : The running context as per onReceive(Context, Intent) . |
intent |
Intent : The received intent as per onReceive(Context, Intent) . |
void onSystemUpdatePending (Context context, Intent intent, long receivedTime)
允许在系统更新服务提供有关未决系统更新的信息时通知接收方。 相同的挂起系统更新可以触发多次调用此方法,因此有必要检查传入参数以获取有关更新的详细信息。
此回调仅适用于设备所有者。
Parameters | |
---|---|
context |
Context : The running context as per onReceive(Context, Intent) . |
intent |
Intent : The received intent as per onReceive(Context, Intent) . |
receivedTime |
long : The time as given by currentTimeMillis() indicating when the current pending update was first available. -1 if no pending update is available. |