DevicePolicyManager设备管理员相关

来源:互联网 发布:音频声道测试软件 编辑:程序博客网 时间:2024/05/10 01:14
在点击条目中开启以及结束设备管理者,来说明设备管理者的用法--Device(装置)Policy(政策)Manager(管理者)
    要开启一个设备管理者有四个步骤:
    (1)自定义一个Receiver(广播接收者),继承DeviceAdminReceiver;
    (2)在AndroidManifest.xml(清单文件)注册设备管理员,注册一个服务
    (3)在res文件夹下新建xml文件夹,申明此设备管理者的权限
    (4)在点击事件的类中,获取DevicePolicyManager对象,调用DevicePolicyManager的方法
    
(1)自定义一个Receiver(广播接收者),继承DeviceAdminReceiver;
    我们只需要使用父类的方法,创建一个类继承即可,不需要在类中实现方法
    public class SjfdAdminReceiver extends DeviceAdminReceiver
(2)在AndroidManifest.xml(清单文件)注册设备管理员
    根据模板代码,修改即可
    <!-- 注册设备管理员 -->
    <receiver
        android:name="com.example.mobilesafe.receiver.SjfdAdminReceiver"
        android:description="@string/sample_device_admin_description"
        android:label="@string/sample_device_admin"
        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>
    --------------------
    android:description="@string/sample_device_admin_description"
    在res/values/string.xml文件中实现description(描述)对此设备管理员的描述
    android:label="@string/sample_device_admin"
    在res/values/string.xml文件中实现label(标题)对此设备管理员的标题
    --------------------
(3)在res文件夹下新建xml文件夹,申明此设备管理者的权限
    实现这行代码android:resource="@xml/device_admin_sample"
    res/xml/device_admin_sample.xml
    <?xml version="1.0" encoding="utf-8"?>
    <device-admin xmlns:android="http://schemas.android.com/apk/res/android" >
        <uses-policies>
            <!-- 重置密码 -->
            <reset-password />
            <!-- 锁屏 -->
            <force-lock />
            <!-- 擦除数据 -->
            <wipe-data />
        </uses-policies>
    </device-admin>
(4)在点击事件中,获取DevicePolicyManager对象,调用DevicePolicyManager的方法
    //根据系统服务获取设备管理者对象
    DevicePolicyManager mDpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
    //关联我们自己写的内容提供者
    ComponentName who = new ComponentName(this,SjfdAdminReceiver.class);
    //判断设备管理器是否被激活,如果已经激活,点击需要关闭,否者操作相反
    if(mDpm.isAdminActive(who)){
        //已经激活,需要关闭
        mDpm.removeActiveAdmin(who);
        //改变点击条目的UI,将开关变为关的状态
        mImgAdmin.setImageResource(R.drawable.admin_inactivated);        
    }else {
        //没有激活,开启设备管理器的警告对话框
        Intent intent = new Intent(
                DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
        intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,who);
        intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                getString(R.string.add_admin_extra_app_text));
        startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN);            
    }

    //在警告对话框选择OK或者CANCELED(取消)之后,将用户选择的结果获取,并做出UI(开关状态)的改变
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==REQUEST_CODE_ENABLE_ADMIN){
            if(resultCode==Activity.RESULT_OK){
                //选择了确认激活操作
                //UI显示
                mImgAdmin.setImageResource(R.drawable.admin_activated);
            }else if(resultCode==Activity.RESULT_CANCELED){
                //选择了确认激活操作
                //UI显示
                mImgAdmin.setImageResource(R.drawable.admin_inactivated);
            }
        }
    }





0 0
原创粉丝点击