admin管理员组

文章数量:1564710

1,注册DeviceAdminReceiver广播接收者

 

接收设备超级管理员的广播

 

import android.app.admin.DeviceAdminReceiver;

 

public class MyAdmin extends DeviceAdminReceiver {

 

}

 

 manifest中的声明:

 

<receiver

    android:name="com.it360.mobilesafe.receivers.MyAdmin"

    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>

 

 

 

2,描述文件

 

声明标题和描述

android:label ="@string/sample_device_admin"

android:description ="@string/sample_device_admin_description"

 

   <string name="sample_device_admin_description">我是一个超级管理员的描述,我可以一键锁屏 </string>

   <string name="sample_device_admin">锁屏 </string>

 

 

所需权限的描述

<meta-data

      android:name="android.app.device_admin"

      android:resource="@xml/device_admin_sample" />

 

 

所需权限的描述文件:

xml/device_admin_sample

 

<device-admin xmlns:android="http://schemas.android/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>

 

 

权限说明:

<limit-password /> 

<watch-login /> 

<reset-password />

<force-lock />

<wipe-data />

 <expire-password />

<encrypted-storage /> 

<disable-camera /> 

 

 

 

 

 

3,代码引导开启设备超级管理员

 

     Tip:注册成功了,我们可以手动去设备管理器开启权限,但是太麻烦,所以,我们可以使用代码引导用户完成开启

 

 

获得设备策略管理器:

DevicePolicyManager dpm = (DevicePolicyManager ) getSystemService(DEVICE_POLICY_SERVICE);

 

 

使用代码引导激活设备管理员:

// 点击激活

cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {

       @Override

       public void onCheckedChanged(CompoundButton buttonView,

                   boolean isChecked) {

             // 声明要激活的组件名称

            ComponentName mDeviceAdminSample = new ComponentName(

                        LockScreenActivity. this, MyAdmin.class);

             if (isChecked) {

                   // 激活设备管理员

                  Intent intent = new Intent();

                  intent.setAction(DevicePolicyManager. ACTION_ADD_DEVICE_ADMIN);

 

                  intent.putExtra(DevicePolicyManager. EXTRA_DEVICE_ADMIN,

                              mDeviceAdminSample);

                  intent.putExtra(DevicePolicyManager. EXTRA_ADD_EXPLANATION,

                               "一键锁屏" );

                  startActivityForResult(intent, 0);

 

            } else {

                   // 取消激活管理员

                   dpm.removeActiveAdmin(mDeviceAdminSample);

            }

      }

});

 

 

 

检查设备管理员是否开启,以便初始化checkbox,

// 初始化 cb

ComponentName who = new ComponentName( this, MyAdmin.class);

if (dpm .isAdminActive(who)) {

       cb.setChecked( true);

else {

       cb.setChecked( false);

}

 

 

intent所返回的onActivityResult,修复bug

// 返回是否激活

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

       super.onActivityResult(requestCode, resultCode, data);

 

       // 检查用户是否开启了超级管理员

       // 声明要激活的组件名称

      ComponentName who = new ComponentName(this, MyAdmin.class);

       if (dpm .isAdminActive(who)) {

             cb.setChecked( true);

      } else {

             cb.setChecked( false);

      }

}

 

 

 

*ComponentName 对象

这是一个可以注册系统组件的对象,,可以注册四大组件

ComponentName who = new ComponentName(this, MyAdmin. class);

 

 

 

 

 

4,使用你的管理员应用(一键锁屏)

 

public class LockOneKeyActivity extends Activity {

 

       private DevicePolicyManager dpm ;

 

       @Override

       protected void onCreate(Bundle savedInstanceState) {

             super.onCreate(savedInstanceState);

            setContentView(R.layout. activity_lock_screen_onekey);

 

             dpm = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE );

             // 设置解锁密码,“”代表无密码,删除密码值为“”,设置密码值为“123456”

             dpm.resetPassword("" , 0);

             // 锁屏

             dpm.lockNow();

             // 清除数据

             //dpm.wipeData(0);

             // 不显示当前activity

            finish();

      }

}

 

 

本文标签: 设备管理器