admin管理员组

文章数量:1530085

PART_A实现设备管理器的广播接收者

  • 自定义广播接收者,继承DeviceAdminReceiver,获取设备管理器权限.

    public class AdminReceiver extends DeviceAdminReceiver {
        @Override
        public void onEnabled(Context context, Intent intent) {
            super.onEnabled(context, intent);
        }
    
        @Override
        public void onDisabled(Context context, Intent intent) {
            super.onDisabled(context, intent);
        }
    
        @Override
        public void onPasswordChanged(Context context, Intent intent) {
            super.onPasswordChanged(context, intent);
        }
    }
    
  • res>xml目录下配置需要申请的权限

    <device-admin>
    
        <!--limit-password  设置密码的规则-->
        <!--watch-login 监控屏幕解锁尝试次数-->
        <!--reset-password 更改屏幕解锁密码-->
        <!--force-lock 设备自动锁屏-->
        <!--wipe-data 删除全部的数据-->
    
        <uses-policies>
            <limit-password />
            <watch-login />
            <reset-password />
            <force-lock />
            <wipe-data />
            <expire-password />
            <encrypted-storage />
            <disable-camera />
        </uses-policies>
    </device-admin>
    
  • 清单文件中配置广播接收者

    <receiver android:name=".lock.AdminReceiver"
        android:label="一键锁屏Demo"
        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>
    

PART_BJava实现

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private DevicePolicyManager mDPM; // 设备策略管理器
    private ComponentName mComponent; // 组件

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 获取设备策略管理器
        mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
        // 初始化组件,申请权限
        mComponent = new ComponentName(this, AdminReceiver.class);

        findViewById(R.id.bt_openAdmin).setOnClickListener(this);
        findViewById(R.id.bt_lock).setOnClickListener(this);
        findViewById(R.id.bt_uninstall).setOnClickListener(this);
        findViewById(R.id.bt_rmSD).setOnClickListener(this);
        findViewById(R.id.bt_return).setOnClickListener(this);

        // 桌面快速一键锁屏
        // mDPM.lockNow();
        // finish();
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            /**
             * 激活超级管理员权限
             */
            case R.id.bt_openAdmin:
                if (mDPM.isAdminActive(mComponent)) {
                    Toast.makeText(this, "超级管理员权限已激活", Toast.LENGTH_SHORT).show();
                } else {
                    Intent inOpenAdmin = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
                    inOpenAdmin.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mComponent);
                    inOpenAdmin.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "激活超级管理员权限");
                    startActivity(inOpenAdmin);
                }
                break;
            /**
             * 一键锁屏
             */
            case R.id.bt_lock:
                if (mDPM.isAdminActive(mComponent)) {
                    mDPM.lockNow(); // 锁屏
                    mDPM.resetPassword("", 0); // 重置锁屏密码o(∩_∩)o..
                } else {
                    Toast.makeText(this, "请先激活超级管理员权限", Toast.LENGTH_SHORT).show();
                }
                break;
            /**
             * 应用卸载
             */
            case R.id.bt_uninstall:
                mDPM.removeActiveAdmin(mComponent); // 删除管理员权限

                Intent inUninstall = new Intent(Intent.ACTION_VIEW);
                inUninstall.addCategory(Intent.CATEGORY_DEFAULT);
                inUninstall.setData(Uri.parse("package:" + getPackageName())); // 传入要卸载的APP包
                startActivity(inUninstall);
                break;
            /**
             * 清除SD卡内容
             */
            case R.id.bt_rmSD:
                if (mDPM.isAdminActive(mComponent)) {
                    mDPM.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE);
                } else {
                    Toast.makeText(this, "请先激活超级管理员权限", Toast.LENGTH_SHORT).show();
                }
                break;
            /**
             * 恢复出厂设置
             */
            case R.id.bt_return:
                if (mDPM.isAdminActive(mComponent)) {
                    mDPM.wipeData(0);
                } else {
                    Toast.makeText(this, "请先激活超级管理员权限", Toast.LENGTH_SHORT).show();
                }
                break;
        }
    }
}

以上。如有错误和疑问,欢迎指正提出。 catface.wyh@gmail

本文标签: 锁屏SD