Android 通过设备管理器成为管理员进行锁屏

大多数情况下,大家在网络上能够找到很多通过DevicePolicyManager去获取DEVICE_POLICY_SERVICE 服务,然后通过startActivity去激活。但是这种有个弊端就是要跳出deviceAdmin 界面去激活。

笔者今天为大家分享一个不用通过startActivity 去激活管理员的方法,但是前提是你要有system 权限。

1、首先获取DevicePolicyManager 服务,创建ComponentName。

mDpm = (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);

mComponentName = new ComponentName(mContext, XXX.class);

2、在AndroidManifest.xml 中添加标签

<receiver android:name="XXXXXX"  
     android:label="@string/app_name"  
     android:description="@string/app_name"  
     android:permission="android.permission.BIND_DEVICE_ADMIN">  
     <meta-data android:name="android.app.device_admin"  
           android:resource="@xml/lock_screen" />  
     <intent-filter>  
        <action  
        android:name="android.app.action.DEVICE_ADMIN_ENABLED" />  
     </intent-filter>  
 </receiver>

在res/xml 中添加lock_screen.xml 文件 文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>   
<device-admin  
  xmlns:android="http://schemas.android.com/apk/res/android">  
    <uses-policies>  

        <force-lock />  

        <wipe-data />  

        <reset-password />  

         <limit-password />  

          <watch-login />  
    </uses-policies>  
</device-admin> 

3、最后通过调用系统hide 类型的接口setActiveAdmin激活管理员,这个时候你就可以操作设备,控制锁屏密码

private void lockScreen(String passWord){
        boolean bActive = mDpm.isAdminActive(mComponentName);
        if (bActive) {
            mDpm.resetPassword(passWord, 0);
            mDpm.lockNow();
        } else {
            setActiveAdmin();
            mDpm.resetPassword(passWord, 0);
            mDpm.lockNow();
        }

}

private void setActiveAdmin() {
    try {
        mDpm.setActiveAdmin(mComponentName, true);

    } catch (RuntimeException e) {
       // Something bad happened...  could be that it was
       // already set, though.
       Log.w(TAG, "Exception trying to activate admin "
            + mComponentName, e);

   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值