设备管理员

一旦程序拥有系统管理员权限,该应用程序将不能被卸载和停用,除非在系统设置——安全——设备管理器

一旦拥有系统管理员权限受系统保护,如果想卸载该应用就要取消系统保护


参考开发文档:Develop-->API Guides--->Administration


开发文档解读:

查看Administration下的DEVICE POLICIES————》 Device Administration

官方提供给一般应用程序的可以获得系统管理员权限的政策(Policies):大致可以分为

1、Note that the Device Administration API currently only supports passwords for screenlock:

2、Disable camera

3、Require storage encryption

4、Prompt user to set a new password.提醒用户设置新密码

5、Lock device immediately.立即锁屏

6、Wipe the device‘s data (that is, restore the device to its factory defaults).檫除设备上的数据

在清单文件中添加配置解读:接受系统设备管理员权限广播


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<activity android:name=".app.DeviceAdminSample"

            android:label="@string/activity_sample_device_admin">

    <intent-filter>

        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.SAMPLE_CODE" />

    </intent-filter>

</activity>

<receiver android:name=".app.DeviceAdminSample$DeviceAdminSampleReceiver" 注:DeviceAdminReceiver 的子类

        android:label="@string/sample_device_admin"

        android:description="@string/sample_device_admin_description"

        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>



步骤:

1、写一个类MyDeviceAdimin继承DeviceAdminReceiver


1

2

3

4

public class MyAdminReceiver extends DeviceAdminReceiver {

    

}

2、在清单文件中配置:


1

2

3

4

5

6

7

8

9

10

<receiver android:name=".app.DeviceAdminSample$DeviceAdminSampleReceiver"

        android:label="@string/sample_device_admin"

        android:description="@string/sample_device_admin_description"

        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>

在res文件夹下创建xml文件夹——再创建device_admin_sample.xml文件

device_admin_sample.xml文件的内容:不需要修改直接在开发文档中拷贝就行


1

2

3

4

5

6

7

8

9

10

11

12

13

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

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

以上设置就是为应用程序添加了设备管理员权限

3、一键锁屏源码案例讲解使用过程:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

public class MainActivity extends Activity {

    private DevicePolicyManager dpm;

    private ComponentName cn;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        //在系统服务中获得设备管理员

        dpm = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);

        cn = new ComponentName(this, MyAdminReceiver.class);//注:设备管理员类的class这里写的设备管理员类是:MyAdminReceiver

            

    }

    public void lockScreen(View view){

        //判断当前管理员策略是否被激活

        boolean active = dpm.isAdminActive(cn);

        if(active){

            dpm.lockNow();//调用一键锁屏功能

            dpm.resetPassword("1234", 0);//设置解屏密码

        }else{

            //激活管理员策略

             openAmin();

        }

    }

    /**

     * 激活管理员策略

     */

    private void openAmin() {

        Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);

     

         intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, cn);

         

         intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,

                 "开启管理员策略之后,可以一键锁屏、远程删除数据");

         //打开激活管理员策略的界面

         startActivity(intent);

    }

}

好了一键锁屏完成了


设置截屏密码:

resetPassword("123",0);

lockNow();

弹出设备管理员激活界面:

isAdminAction(who);

来自为知笔记(Wiz)

时间: 2024-11-02 23:32:03

设备管理员的相关文章

手机卫士04_ 手机定位_超级管理员_数据库

1.1 定位功能简介: 常见的定位方式: ①网络定位:(IP地址),拨号上网一般是动态分配,如果网吧公司,就是静态分配的. 比较有名的数据库:纯真Ip数据库,有很多公开的ip信息 根据ip地址定位.可能很准确,也可能只是一个大概的范围 ②基站定位:必须有手机卡才能基站定位 根据手机与基站联系的信号强弱+算法定位. 定位效果:可能很准确,(与基站位置相关,周围基站越多越近效果越好.) ③GPS定位:采用卫星定位 利用卫星的位置与手机GPS模块的建立联系,通过算法判断位置. 至少需要三颗卫星,获取手

一键获取软硬件配置及管理员组

作为公司的硬件维护,经常要面对集团各种名头的稽查,对我们工作量造成相当大的提高.一个人负责将近200台的电脑.公司的IT政策不允许使用非法软件.USB口要关闭.电脑使用者不能有管理员权限等等.于是每一个最底层的工作人员一天到晚围着用户的电脑跑,查找硬件配置,软件信息等,为了提高工作效率,于是就写了以下批处理,减轻自己的工作负担. 功能说明: 1.扫描机器硬件配置 2.电脑的网络配置 3.扫描机器软件信息 4.查看Administrators和Power Users组内的用户 5.电脑的USB口情

[android] 手机卫士设备管理权限锁屏

设备管理员 Device Admin 获取DevicePolicyManager对象,通过getSystemService(DEVICE_POLICY_MANAGER),设备策略管理器 调用DevicePolicyManager对象的lockNow()方法,锁定,此时会报 安全异常 新建一个类MyAdmin继承系统的DeviceAdminReceiver,这个是广播接收者 清单文件进行注册 添加<receiver>节点,设置名称 设置权限 android:permission=”android

Android Framework 记录之二

原文地址:http://blog.csdn.net/banketree/article/details/24982021 接着上次的记录,续写. 23.services目录 文件 描述 class AlarmManagerService extends IAlarmManager.Stub { //定时管理服务 public class AppOpsService extends IAppOpsService.Stub {  // 程序选项服务 public class AppsLaunchFa

关于云存储技术的五个问题

云存储技术当然不是科学项目,但是它对企业组织的部分甚至所有数据都是适用的. 下面是5个关于云存储技术的关键问题,它们将有助于企业用户决定是否采用云存储技术. 1. 什么是云存储技术,它是如何工作的? 一百个人对于这个问题会有一百种不同的答案.从根本上来说,云存储技术是一种实用型服务,它可以为众多用户提供一个通过网络访问的共享存储池. 存储云是可以调整的,它们可以很轻松地扩展或根据客户需求定制. 2. 公共云与私有云之间有什么不同? 公共云是一种即付费即使用的存储服务. 它的所有组件都处于客户的防

【译】Android 6.0 Changes (机翻加轻微人工校对)

Android 6.0 Changes In this document Runtime Permissions Doze and App Standby Apache HTTP Client Removal BoringSSL Access to Hardware Identifiers Notifications AudioManager Changes Text Selection Browser Bookmark Changes Android Keystore Changes Wi-F

SNMP详解

什么是SNMP 简单网络管理协议(SNMP:Simple Network Management Protocol)是由互联网工程任务组(IETF:Internet Engineering Task Force )定义的一套网络管理协议.该协议基于简单网关监视协议(SGMP:Simple Gateway Monitor Protocol). SNMP为不同厂家生产的不同种类.不同型号的设备定义了一个统一的规范,大大简化了设备管理员的管理工作,提高工作效率. SNMP的工作方式 SNMP可以让一个管

Android设备管理器&mdash;&mdash;DevicePolicyManager

自从安卓2.2(API=8)以后,安卓手机是通过设备管理API对手机进行系统级的设备管理. 本篇通过大家熟悉的"一键锁屏"的小项目实现来介绍设备管理API如何通过强制设备管理策略创建一个安全敏感的应用程序. 一键锁屏的实现原理:当按锁屏键的时候,会发出一个广播,当用户界面接收到一个广播的时候就可以实现锁屏.而广播的发送是我们调用DevicePolicyManager(设备管理接收者)中的lockNow()方法来实现. 锁屏需要将应用程序提升为系统管理员的权限,如果当前的应用具备系统管理

Android开发之实现锁屏功能

锁屏需要引入设备超级管理员.在文档Android开发文档的Administration中有详细的说明.Android设备管理系统功能和控制访问. 主要有一下几个步骤: 1  创建广播接收者,实现DeviceAdminReceiver package com.andy.lockscreen; import android.app.admin.DeviceAdminReceiver; /** * @author Zhang,Tianyou * @version 2014年11月20日 下午9:51: