admin管理员组

文章数量:1583574

Android项目:手机安全卫士(8)—— 管理员权限

1 介绍

关于手机防盗的功能,前面我们已经完成了一半,今天将要完成另一半,我们先来看看整体的功能描述:

现在,我们还差两个功能:

  • 远程删除数据
  • 远程锁屏

需要说明一下,完成今天的任务,你就可以开发一款 App:一键锁屏,是不是很厉害,哈哈。

  • Android 项目:手机安全卫士(3)—— 主界面布局
  • Android 项目:手机安全卫士(4)—— 自定义(组合)控件、属性
  • Android 项目:手机安全卫士(5)—— 自定义弹窗
  • Android 项目:手机安全卫士(6)—— 手机防盗设置向导
  • Android 项目:手机安全卫士(6)—— 手机防盗设置向导(二)
  • Android 项目:手机安全卫士(7)—— 手机防盗功能

项目源码地址(实时更新):https://github/xwdoor/MobileSafe

2 管理员权限

不管是远程删除数据,还是远程锁屏,都需要系统的管理员权限,既然如此,那让我们先来看看怎么获取管理员权限。
首先,创建一个 Receiver:AdminReceiver,继承自 DeviceAdminReceiver,看清楚哦,不是继承自 BroadcastReceiver:


    /**
     * Created by XWdoor on 2016/3/9 009 10:03.
     * 博客:http://blog.csdn/xwdoor
     */
    public class AdminReceiver extends DeviceAdminReceiver {

    }

这个 Receiver 什么都不做,只是一个傀儡,重点在于它在清单文件 AndroidManifest.xml 中进行注册时的配置,如下所示:


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

需要注意几点,需要配置一个权限属性:android:permission="android.permission.BIND_DEVICE_ADMIN",除此之外,我们还需要设置它的配置数据,标明我们将需要那些操作,在这里,我们创建一个 xml 配置文件:device_admin.xml,内容如下:


    <device-admin xmlns:android="http://schemas.android/apk/res/android">

        <uses-policies>
            <!-- 远程锁屏权限 -->
            <force-lock />

            <!-- 远程删除数据 -->
            <wipe-data />
        </uses-policies>

    </device-admin>

除了这两个权限之外,其实还有其他很多的权限,如设置锁频密码、禁用摄像头、加密存储卡 等策略,这里我们只用到两个。好了,这些准备工作做完,我们就可以获取并激活管理员权限了。

3 激活管理员权限

配置好参数之后,就需要在代码中提示用户激活权限了,首先在 BaseActivity 中初始化设备管理器:


    // 设备策略管理器
    mDPM = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);
    // 初始化管理员组件
    mDeviceComponentName = new ComponentName(this, AdminReceiver.class);

然后添加激活管理员权限的方法,如下:


    /**
     * 激活超级管理员权限 设置->安全->设备管理器
     */
    public void activeAdmin() {
        Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
        intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceComponentName);
        intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                "手机安全卫士-手机防盗,您的好帮手,值得拥有");
        startActivity(intent);
        showToast("请先激活手机防盗的管理员权限");
    }

然后在手机防盗界面 AntiTheftActivity,添加判断,并提示用户激活:


    //如果没有激活权限,提示激活
    if(!mDPM.isAdminActive(mDeviceComponentName)){
        activeAdmin();
    }

4 远程锁屏

有了上面的准备,锁屏就简单了,直接调用锁屏的 api 即可:


    else if ("#*lockscreen*#".equals(msg)) {
        //远程锁屏
        lockNow(context);
        abortBroadcast();
    }

    /**
     * 立即锁屏
     */
    public void lockNow(Context context) {
        // 设备策略管理器
        DevicePolicyManager mDPM = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
        // 初始化管理员组件
        ComponentName mDeviceComponentName = new ComponentName(context, AdminReceiver.class);

        if (mDPM.isAdminActive(mDeviceComponentName)) {
            mDPM.lockNow();// 立即锁屏
            //mDPM.resetPassword("123456", 0);// 重新设置密码, 传""取消密码
        }
    }

5 删除数据

同样,也是调用 api 即可


    else if ("#*wipedata*#".equals(msg)) {
        //删除数据
        wipeData(context);
        abortBroadcast();
    }

    /**
     * 清除数据
     */
    public void wipeData(Context context) {
        // 设备策略管理器
        DevicePolicyManager mDPM = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
        // 初始化管理员组件
        ComponentName mDeviceComponentName = new ComponentName(context, AdminReceiver.class);

        if (mDPM.isAdminActive(mDeviceComponentName)) {
            mDPM.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE);// 清除内部数据和sdcard
        }
    }

6 总结

今天的内容是干货有木有,可以做一键锁屏了,可以设置锁频密码、禁用摄像头、加密存储卡了,很兴奋吧。

最近的学习强度增加了,是因为需要抽出时间做其他事,所以节奏加快了。

  • Android 项目:手机安全卫士(3)—— 主界面布局
  • Android 项目:手机安全卫士(4)—— 自定义(组合)控件、属性
  • Android 项目:手机安全卫士(5)—— 自定义弹窗
  • Android 项目:手机安全卫士(6)—— 手机防盗设置向导
  • Android 项目:手机安全卫士(6)—— 手机防盗设置向导(二)
  • Android 项目:手机安全卫士(7)—— 手机防盗功能

项目源码地址(实时更新):https://github/xwdoor/MobileSafe

本文标签: 管理员权限项目安全卫士手机android