Android ApiDemos示例解析(21):App->Device Admin
Device Admin示例介绍了类DeviceAdminReceiver,DevicePolicyManager和ActivityManager。
类DevicePolicyManager 用于管理Android设备定义的一些策略,主要指密码定义的长度,密码是否要含大写字母,小写字母等设置密码需要满足的规范,锁定设备或是清除所有用户数据,这个类一般需要配合DeviceAdminReceiver来使用。DeviceAdminReceiver派生于BroadcastReceiver,可以接受Android操作系统发出的Intent事件:如密码过期了,密码更新等。
当它Publish在AndroidManifest.xml作为BroadcastReceiver定义时,必须处理android.app.action.DEVICE_ADMIN_ENABLED和设置android.permission.BIND_DEVICE_ADMIN权限:
<receiver android:name=”.app.DeviceAdminSample”
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>
使用DevicePolicyManager 来设置密码定义的Policy
[java]
void updatePolicies() {
SharedPreferences prefs = getSamplePreferences(this);
final int pwQuality = prefs.getInt(PREF_PASSWORD_QUALITY,
DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED);
final int pwLength = prefs.getInt(PREF_PASSWORD_LENGTH, 0);
final int maxFailedPw = prefs.getInt(PREF_MAX_FAILED_PW, 0);
boolean active = mDPM.isAdminActive(mDeviceAdminSample);
if (active) {
mDPM.setPasswordQuality(mDeviceAdminSample, pwQuality);
mDPM.setPasswordMinimumLength(mDeviceAdminSample, pwLength);
mDPM.setMaximumFailedPasswordsForWipe(mDeviceAdminSample, maxFailedPw);
}
}
void updatePolicies() {
SharedPreferences prefs = getSamplePreferences(this);
final int pwQuality = prefs.getInt(PREF_PASSWORD_QUALITY,
DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED);
final int pwLength = prefs.getInt(PREF_PASSWORD_LENGTH, 0);
final int maxFailedPw = prefs.getInt(PREF_MAX_FAILED_PW, 0);
boolean active = mDPM.isAdminActive(mDeviceAdminSample);
if (active) {
mDPM.setPasswordQuality(mDeviceAdminSample, pwQuality);
mDPM.setPasswordMinimumLength(mDeviceAdminSample, pwLength);
mDPM.setMaximumFailedPasswordsForWipe(mDeviceAdminSample, maxFailedPw);
}
}
锁定设备方法:
[java]
mDPM.lockNow();
mDPM.lockNow();
清除所有用户数据(相当于Master Reset)
[java]
mDPM.wipeData(0);
mDPM.wipeData(0);
ActivityManager类一般用来获取Android系统中所有运行的Activity的信息,有点类似Windows中的Task Manager。可以获得 Memory ,Process ,Service等信息。而在例子中使用了一个很好笑的方法:isUserAMonkey ,用来判断当前设备使用者是否为一只猴子:-)。真不知道如果来判断,我以为如果这是乱敲键盘会使这个函数返回“真”。结果不是:)。
总的来说这些类和方法在一般的应用中用到的地方很少,有些印象就可以了。
作者:mapdigit
补充:移动开发 , Android ,