android-Device Administration设备管理器

本文详细介绍了Android设备管理开发,包括在manifest文件中配置、重点涉及的三个核心类、如何实现DeviceAdminReceiver以及授权和devicepolicyManager的使用。

设备管理开发

Device Administration

1.creat the manifest
<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>
ps:注意:
 1)权限
 android:permission="android.permission.BIND_DEVICE_ADMIN"
 2)资源文件:
  android:resource="@xml/device_admin_sample"
    xml:
    <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 />           //禁止相机
      </uses-policies>
    </device-admin>
 3)action:  
 android:name="android.app.action.DEVICE_ADMIN_ENABLED" 
    重写DeviceAdminReceiver可以管理设备。
2.主要有三个类
DeviceAdminReceiver:重写相关操作
DeviceAPolicyManager:必须有一个DeviceAdminReceiver用户目前启用。DevicePolicyManager管理政策的一个或多个DeviceAdminReceiver实例
DeviceAdminInfo:该类用于为设备管理员指定元数据组件。
3.继承实现一个DeviceAdminRecevier
public class DeviceAdminSample extends DeviceAdminReceiver {

    void showToast(Context context, String msg) {
        String status = context.getString(R.string.admin_receiver_status, msg);
        Toast.makeText(context, status, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onEnabled(Context context, Intent intent) {
        showToast(context, context.getString(R.string.admin_receiver_status_enabled));
    }

    @Override
    public CharSequence onDisableRequested(Context context, Intent intent) {
        return context.getString(R.string.admin_receiver_status_disable_warning);
    }

    @Override
    public void onDisabled(Context context, Intent intent) {
        showToast(context, context.getString(R.string.admin_receiver_status_disabled));
    }

    @Override
    public void onPasswordChanged(Context context, Intent intent) {
        showToast(context, context.getString(R.string.admin_receiver_status_pw_changed));
    }
...
}
4.授权
1)创建一个Intent 添加设备管理员
 Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
2)激活广播接收者
ComponentName who = new ComponentName(this, DeviceAdminSample.class);
3)授权设备管理员
 intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, who);
4)开启广播
startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN);
5.devicepolicyManager
ps:ComponentName(组件名称)是用来打开其他应用程序中的Activity或服务的  
    类似:inflater
方法:
当前最大测试次数,当超过次数就清除数据
getMaximumFailedPasswordsForWipe (ComponentName admin)
//删除用户管理员权限
removeActiveAdmin(ComponentName admin)
//重置密码
resetPassword(String password,int flags)
//设置用户所有者的信息显示在锁屏上
setDeviceOwnerLockScreenInfo
void setDeviceOwnerLockScreenInfo (ComponentName admin, 
                CharSequence info)

1)获取方式:
DevicePolicyManager mDPM =
(DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
2)功能
    a.set password polocies 设置密码相关的
    b.set device lock   设置锁屏
    c.Perform data wipe  执行数据清除
3)具体操作
    1.设置密码
        Intent intent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD);
        startActivity(intent);
    2.设置密码相关的限制
        属性:
            PASSWORD_QUALITY_ALPHABETIC:必须至少一个字母
            PASSWORD_QUALITY_ALPHANUMERIC:至少一个数字和字母
            PASSWORD_QUALITY_NUMERIC:至少包含数字
            PASSWORD_QUALITY_COMPLEX:至少一个数字,字母和特殊符号
            PASSWORD_QUALITY_SOMETHING:无限制、
            PASSWORD_QUALITY_UNSPECIFIED:无密码要求
        用法:
            DevicePolicyManager mDPM;
            ComponentName mDeviceAdminSample;
            ...
            mDPM.setPasswordQuality(mDeviceAdminSample, DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC);
    3.设置密码内容
        可以对上面的微调
        setPasswordMinimumLetters()
        setPasswordMinimumLowerCase()
        setPasswordMinimumUpperCase()  
        setPasswordMinimumNonLetter()
        setPasswordMinimumNumeric()
        setPasswordMinimumSymbols()
        setPasswordMinimumLength()   密码长度
        setMaximumFailedPasswordsForWipe()  测试次数
        setPasswordExpirationTimeout()   设置密码到期时间
        setPasswordHistoryLength()  设置限制历史密码的数量
        ex:(设置至少两个大写字母)
            DevicePolicyManager mDPM;
            ComponentName mDeviceAdminSample;
            int pwMinUppercase = 2;
            ...
            mDPM.setPasswordMinimumUpperCase(mDeviceAdminSample, pwMinUppercase);
    4.设置锁屏的时间
        ex:
        DevicePolicyManager mDPM;
        ComponentName mDeviceAdminSample;
        ...
        long timeMs = 1000L*Long.parseLong(mTimeout.getText().toString());
        mDPM.setMaximumTimeToLock(mDeviceAdminSample, timeMs);

        锁屏的方法:
        DevicePolicyManager mDPM;
        mDPM.lockNow();

    5.初始化数据
        DevicePolicyManager mDPM;
        mDPM.wipeData(0);  //默认一定为0
    6.关闭相机
        通过复选控件控制相机使用
        ex:
            private CheckBoxPreference mDisableCameraCheckbox;
            DevicePolicyManager mDPM;
            ComponentName mDeviceAdminSample;
            ...
            mDPM.setCameraDisabled(mDeviceAdminSample, mDisableCameraCheckbox.isChecked())
    7.加密数据
        DevicePolicyManager mDPM;
        ComponentName mDeviceAdminSample;
        ...
        mDPM.setStorageEncryption(mDeviceAdminSample, true);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值