Most visited

Recently visited

Added in API level 8

DeviceAdminReceiver

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>

Developer Guides

有关设备管理的更多信息,请阅读 Device Administration开发人员指南。

Summary

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,用于需要管理员标识自身的 DevicePolicyManager API。

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)

当用户要求禁用管理员时调用,作为接收 ACTION_DEVICE_ADMIN_DISABLE_REQUESTED的结果,让您有机会向他们发送警告消息。

void onDisabled(Context context, Intent intent)

在管理员被禁用之前调用,作为接收 ACTION_DEVICE_ADMIN_DISABLED的结果。

void onEnabled(Context context, Intent intent)

在管理员第一次启用之后调用,由于收到 ACTION_DEVICE_ADMIN_ENABLED

void onLockTaskModeEntering(Context context, Intent intent, String pkg)

当设备进入锁定任务模式时调用。

void onLockTaskModeExiting(Context context, Intent intent)

当设备正在退出锁定任务模式时调用。

void onPasswordChanged(Context context, Intent intent)

在用户更改其设备或配置文件质询密码之后调用,作为接收 ACTION_PASSWORD_CHANGED的结果。

void onPasswordExpiring(Context context, Intent intent)

当设备或配置文件质询密码即将过期或已过期时,定期调用。

void onPasswordFailed(Context context, Intent intent)

在用户输入设备或配置文件质询密码失败后调用,作为接收 ACTION_PASSWORD_FAILED的结果。

void onPasswordSucceeded(Context context, Intent intent)

在用户成功输入其设备或配置文件质询密码后调用,作为接收 ACTION_PASSWORD_SUCCEEDED的结果。

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

Constants

ACTION_DEVICE_ADMIN_DISABLED

Added in API level 8
String ACTION_DEVICE_ADMIN_DISABLED

操作在用户禁用时发送给设备管理员。 返回后,应用程序不再有权访问受保护的设备策略管理器API。 你通常会在onDisabled(Context, Intent)处理这个。 请注意,此操作将发送给接收方,而不管它是否明确列在其意向过滤器中。

常量值:“android.app.action.DEVICE_ADMIN_DISABLED”

ACTION_DEVICE_ADMIN_DISABLE_REQUESTED

Added in API level 8
String ACTION_DEVICE_ADMIN_DISABLE_REQUESTED

当用户请求将其禁用时,但在此之前已将其发送到设备管理员的操作。 这使您有机会通过在结果Intent中设置额外字段EXTRA_DISABLE_WARNING ,向用户提供关于禁用管理员的影响的消息。 如果未设置,则不会显示警告。 如果设置,给定的文本将在用户禁用管理员之前显示给用户。

常量值:“android.app.action.DEVICE_ADMIN_DISABLE_REQUESTED”

ACTION_DEVICE_ADMIN_ENABLED

Added in API level 8
String ACTION_DEVICE_ADMIN_ENABLED

这是设备管理员必须执行以允许管理设备的主要操作。 这将在用户启用它进行管理时设置给接收方。 您通常会在onEnabled(Context, Intent)处理此onEnabled(Context, Intent) 为了得到支持,接收器还必须要求BIND_DEVICE_ADMIN权限,以便其他应用程序不能滥用它。

常量值:“android.app.action.DEVICE_ADMIN_ENABLED”

ACTION_LOCK_TASK_ENTERING

Added in API level 21
String ACTION_LOCK_TASK_ENTERING

发送给设备管理员的动作通知设备正在进入锁定任务模式。 额外的EXTRA_LOCK_TASK_PACKAGE将描述使用锁定任务模式的软件包。

主叫设备管理员必须是设备所有者或配置文件所有者才能接收此广播。

也可以看看:

常量值:“android.app.action.LOCK_TASK_ENTERING”

ACTION_LOCK_TASK_EXITING

Added in API level 21
String ACTION_LOCK_TASK_EXITING

发送给设备管理员的动作通知设备正在退出锁定任务模式。

主叫设备管理员必须是设备所有者或配置文件所有者才能接收此广播。

也可以看看:

常量值:“android.app.action.LOCK_TASK_EXITING”

ACTION_PASSWORD_CHANGED

Added in API level 8
String ACTION_PASSWORD_CHANGED

当用户更改其设备密码或配置文件质询时发送给设备管理员的操作。 您可以在此处使用DevicePolicyManager.isActivePasswordSufficient()检查新密码的DevicePolicyManager.isActivePasswordSufficient() 您通常会在onPasswordChanged(Context, Intent)处理此onPasswordChanged(Context, Intent)

主叫设备管理员必须请求 USES_POLICY_LIMIT_PASSWORD接收此广播。

常量值:“android.app.action.ACTION_PASSWORD_CHANGED”

ACTION_PASSWORD_EXPIRING

Added in API level 11
String ACTION_PASSWORD_EXPIRING

当设备或配置文件质询密码过期时,操作会定期发送给设备管理员。 你通常会在onPasswordExpiring(Context, Intent)处理这个。

主叫设备管理员必须请求 USES_POLICY_EXPIRE_PASSWORD接收此广播。

常量值:“android.app.action.ACTION_PASSWORD_EXPIRING”

ACTION_PASSWORD_FAILED

Added in API level 8
String ACTION_PASSWORD_FAILED

当用户输入错误的设备或配置文件质询密码时,发送给设备管理员的操作。 您可以在此处检查DevicePolicyManager.getCurrentFailedPasswordAttempts()已失败的密码尝试次数。 您通常会在onPasswordFailed(Context, Intent)处理此onPasswordFailed(Context, Intent)

主叫设备管理员必须请求 USES_POLICY_WATCH_LOGIN接收此广播。

常量值:“android.app.action.ACTION_PASSWORD_FAILED”

ACTION_PASSWORD_SUCCEEDED

Added in API level 8
String ACTION_PASSWORD_SUCCEEDED

当用户成功输入其设备或配置文件质询密码后,发送给设备管理员的操作失败一次或多次后。 你通常会在onPasswordSucceeded(Context, Intent)处理这个onPasswordSucceeded(Context, Intent)

主叫设备管理员必须请求 USES_POLICY_WATCH_LOGIN接收此广播。

常量值:“android.app.action.ACTION_PASSWORD_SUCCEEDED”

ACTION_PROFILE_PROVISIONING_COMPLETE

Added in API level 21
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”

BUGREPORT_FAILURE_FAILED_COMPLETING

Added in API level 24
int BUGREPORT_FAILURE_FAILED_COMPLETING

Bugreport完成过程失败。

如果收到此错误代码,则可以重试错误报告的请求。

也可以看看:

常量值:0(0x00000000)

BUGREPORT_FAILURE_FILE_NO_LONGER_AVAILABLE

Added in API level 24
int BUGREPORT_FAILURE_FILE_NO_LONGER_AVAILABLE

Bugreport已创建,但不再可用于收集。

出现此错误的原因可能是设备的用户在创建后长时间未同意分享错误报告。

如果收到此错误代码,则可以重试错误报告的请求。

也可以看看:

常数值:1(0x00000001)

DEVICE_ADMIN_META_DATA

Added in API level 8
String DEVICE_ADMIN_META_DATA

DevicePolicy组件发布有关其自身的信息的名称。 此元数据必须引用包含设备管理标签的XML资源。

常量值:“android.app.device_admin”

EXTRA_DISABLE_WARNING

Added in API level 8
String EXTRA_DISABLE_WARNING

一个CharSequence可以显示给用户,告知他们禁用管理员的影响。

也可以看看:

常量值:“android.app.extra.DISABLE_WARNING”

EXTRA_LOCK_TASK_PACKAGE

Added in API level 21
String EXTRA_LOCK_TASK_PACKAGE

包含进入锁定任务模式的软件包名称的字符串。

也可以看看:

常量值:“android.app.extra.LOCK_TASK_PACKAGE”

Public constructors

DeviceAdminReceiver

Added in API level 8
DeviceAdminReceiver ()

Public methods

getManager

Added in API level 8
DevicePolicyManager getManager (Context context)

检索此管理员的DevicePolicyManager界面以使用系统。

Parameters
context Context
Returns
DevicePolicyManager

getWho

Added in API level 8
ComponentName getWho (Context context)

检索描述此设备管理员是谁的ComponentName,用于需要管理员标识自身的 DevicePolicyManager API。

Parameters
context Context
Returns
ComponentName

onBugreportFailed

Added in API level 24
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

也可以看看:

onBugreportShared

Added in API level 24
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.

也可以看看:

onBugreportSharingDeclined

Added in API level 24
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).

也可以看看:

onChoosePrivateKeyAlias

Added in API level 23
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.

也可以看看:

onDisableRequested

Added in API level 8
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.

onDisabled

Added in API level 8
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).

onEnabled

Added in API level 8
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).

也可以看看:

onLockTaskModeEntering

Added in API level 21
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.

onLockTaskModeExiting

Added in API level 21
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).

onPasswordChanged

Added in API level 8
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).

onPasswordExpiring

Added in API level 11
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).

onPasswordFailed

Added in API level 8
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).

onPasswordSucceeded

Added in API level 8
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).

onProfileProvisioningComplete

Added in API level 21
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).

onReadyForUserInitialization

Added in API level 23
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).

onReceive

Added in API level 8
void onReceive (Context context, 
                Intent intent)

拦截标准设备管理员广播。 实施不应该重写此方法; 最好为每个动作实施便利回调。

Parameters
context Context: The Context in which the receiver is running.
intent Intent: The Intent being received.

onSecurityLogsAvailable

Added in API level 24
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).

也可以看看:

onSystemUpdatePending

Added in API level 23
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.

Hooray!