码迷,mamicode.com
首页 > 移动开发 > 详细

Android wiki : 18.DevicePolicyManager锁屏和清除数据

时间:2015-07-06 12:24:10      阅读:772      评论:0      收藏:0      [点我收藏+]

标签:


DevicePolicyManager 类:设备策略管理器   安全设备

Android 2.2 SDK提供了一个可管理和操作设备的API叫DevicePolicyManager,
使用这个API你可以接管手机的应用权限,对手机做出很多大胆的操 作,
比如锁屏、恢复出厂设置、设置密码、强制清除密码,修改密码、设置屏幕灯光渐暗时间间隔等操作。
这个API让你的程序直接掌握了系统的命脉。
但是,同样的道理,别人也可以做类似的程序,各程序之间的权限是不起冲突的~

首先,要想调用DevicePolicyManager,那么我们必须先要注册一个admin,如何注册呢,也是需要通过代码去注册。
有了admin权限,我们才可能对系统进行上述功能的操作。
其次,程序在启动激活的时候,会给用户相应提示,只有当用户点击“激活”后,我们的代码才能真正的运转。
再有,就是创建权限啊,监听了。


//dpm.lockNow();// 锁屏
//dpm.resetPassword(password, 0);// 设置屏蔽密码要和上面这个方法一起用
//dpm.removeActiveAdmin(who);取消某个应用的安全设备权限
//dpm.setPasswordMinimumLength(admin, length);//设置密码长度
//dpm.setPasswordHistoryLength(admin, length);


1:编写调用方法

    //一键锁屏
    public void lockscreen(View view){
    
        DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);
        ComponentName  who = new ComponentName(this,MyAdmin.class);//2:创建    MyAdmin.class这个类
        if(dpm.isAdminActive(who)){//检查这个设置是否添加到安全设备中
        
            dpm.lockNow();//锁屏
            //dpm.resetPassword("", 0);//设置屏蔽密码,要和dpm.lockNow();方法一起用才会立刻锁定屏幕
            
            //清除Sdcard上的数据
            //dpm.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE);
            //恢复出厂设置
            //dpm.wipeData(0);

        }else{
            //激活这个应用添加到设备管理器
            
            Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
            //我要激活谁
            ComponentName  mDeviceAdminSample = new ComponentName(this,MyAdmin.class);
            
            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample);
           //劝说用户开启管理员权限
            intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"哥们开启我可以一键锁屏,你的按钮就不会经常失灵");
            startActivity(intent);
            
                
            //.清除激活这个应用添加到设备管理器
            //ComponentName   mDeviceAdminSample = new ComponentName(this,MyAdmin.class);
            //dpm.removeActiveAdmin(mDeviceAdminSample);
            
        }

    }
    
    
2:创建    广播类MyAdmin 继承DeviceAdminReceiver
    /**
 * 特殊的广播接收者
 * @author Administrator
 *
 */
public class MyAdmin extends DeviceAdminReceiver {

}

3:在清单文件中配置这个特殊的广播接收者,用于监听权限的变化

<receiver
    android:name="com.itheima.lockscreen.MyAdmin"
    android:description="@string/sample_device_admin_description"  //这里文字要按ctrl+1在values中添加这个字符串
    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" />  //5:在/res/xml 下创建device_admin_sample.xml

    <intent-filter>
        <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
    </intent-filter>
</receiver>

4:在res目录下创建xml目录

5:在/res/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>
    
   

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android wiki : 18.DevicePolicyManager锁屏和清除数据

标签:

原文地址:http://blog.csdn.net/u014352836/article/details/46771367

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!