设备策略管理---设备管理器

补充补充设备管理员····

==================华丽的分割线,进入主题===============================

android 2.2引入设备管理api,以支持开发可执行系统安全策略并基于设备当前安全级别动态调整相关特性的应用。这种应用被称为设备管理员。

设备管理员必须在设备安全设置中显式打开,并且如果处于激活状态将无法被卸载【卸载方法,进入程序管理,关闭设备管理员权限,即可卸载。】

被打开之后,设备管理员可以获取系统特殊权利,比如锁定设备,改变锁屏密码设置擦除整个设备数据。

 

实现方法,DevicePolicyManagerService

与大部分系统服务相同,DevicePolicyManagerServiceSystem_Server进程启动,并以system用户运行,因此它可以执行大部分android特权操作。

不同之处在于,该服务可以帮助第三方应用(不需要拥有任何特殊系统权限)获取到相关的特权操作(比如修改锁屏密码)。

 

DevicePolicyManagerService运行时将会在内存中为每个设备用户维护一个内部的策略结构体。策略也会被保存在硬盘中的xml文件中。

 

设备管理员激活后,关闭操作或者策略的更新会被记录到目标用户device_policies.xml文件中。对于设备所有者用户,文件会被保存在/data/system/目录下:对于其他用户,则保存在该用户的系统目录下/data/user/<user-ID>.文件所有者是system用户,权限是0600,只有system用户才能修改。

===================华丽的分割线,上代码实现===============================

1.首先,需要定义各种政策支持个功能水平,策略可以覆盖屏幕锁定密码强度,超时时间,加密等;

eg:adminpolicy.xml

<?xml version="1.0" encoding="utf-8"?>

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

    <uses-policies>

        <!-- 限制密码选择 -->

        <limit-password />

        <!-- 监控登录尝试 -->

        <watch-login />

        <!-- 强行锁定 -->

        <force-lock />

        <!-- 清除所有数据(恢复出厂设置) -->

        <wipe-data />

        <!-- 重置密码 -->

        <reset-password />

    </uses-policies>

</device-admin>


 

注意:必须声明所选择的策略集合,将执行应用程序xml在res.xml文件进行引入;

2.写一个广播[google官网API很详细

<receiver android:name=".Policy$PolicyAdmin"

    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>


 

demo配置 androidManifest.xml

<receiver android:name=".broadcast.AdminReceiver"

    android:label="@string/device"

    android:description="@string/device_des"

    android:permission="android.permission.BIND_DEVICE_ADMIN">

    <meta-data android:name="android.app.device_admin"

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

    <intent-filter>

        <action

            android:name="android.app.action.DEVICE_ADMIN_ENABLED" />

    </intent-filter>

</receiver>


 

3.完善广播类

public class PolicyAdmin extends DeviceAdminReceiver {

    private static final String ACTION_PREF ="DeviceAdmin" ;

 

    @Override

    public void onDisabled(Context context, Intent intent) {

        super.onDisabled(context, intent);

 

        SharedPreferences pre=context.getSharedPreferences(ACTION_PREF,Context.MODE_PRIVATE);

        pre.edit().clear().commit();

    }

}


 

4.mainactivity

1.获取到设备管理器  

mDevicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);


2.申请权限

mComponentName = new ComponentName(this, PolicyAdmin.class);


3.判断是否有权限,没有权限跳转到赋予权限的页面.这是一个隐形的intent启动设备管理,在androidmainfest.xml中设定相应的过滤器

//启动设备管理(隐师intent) 在androidMainfest.xml中设定相应过滤器

Intent intent=new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);

//权限列表

intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mComponentName);

//描述(additional explanation)

intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"-----一键锁屏");

startActivityForResult(intent, 0);


4.调用锁屏方法

//已获得管理员的权限,则直接锁屏

mDevicePolicyManager.lockNow();



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值