Android Device Administration 设备管理器——实现一键锁屏


最近研究了一下安全这一块的内容,当然,我是比较水的,所以也拿不出什么好知识点,但是有一些冷门的东西我还是可以聊聊的,就拿这个锁屏来说吧,我们现在市面上有一些一键锁屏的软件

我们可以看到,是数不胜数的,所以,其实他一开始使用的时候,都需要请求设备管理器

我们可以看到,只有当我们激活的时候,我们才可以使用它,那么,他到底是什么东西呢?其实,当我们激活之后,我们可以在我们手机的设置——安全——设备管理器里面看到他的所有信息

我们带着这个疑问,打开我们的android api指南看看

  • 地址:http://www.android-doc.com/guide/topics/admin/device-admin.html

一.设备管理

Android 2.2引入了企业应用程序提供支持 Android设备管理API。 设备管理API提供了设备 系统级管理功能。 这些api允许您创建安全性敏感的应用程序用于企业设置,例如, 内置Android电子邮件应用程序利用了新的api来改善 交换的支持。 通过电子邮件应用程序中,管理员可以交换 执行密码策略——包括字母数字密码或数字 针,在设备管理员也可以远程擦除(即 恢复工厂默认值丢失或被盗的手机。 用户可以交换同步 他们的电子邮件和日历数据。

二.设备管理API概述

下面的例子类型的应用程序,可以使用设备管理API:

  • 电子邮件客户端。
  • 远程擦除数据的安全应用程序
  • 设备管理服务和应用程序。

三.它是如何工作的

你使用的设备管理API编写设备管理应用程序的用户 安装在他们的设备上。 设备管理应用程序执行所需的政策。

  • 系统管理员写一个设备管理应用程序执行 远程/本地设备安全策略。 这些政策可能是硬编码的 应用程序或应用程序可以动态地从第三方获取政策服务器。

  • 应用程序安装在用户的设备上。 但是Android确实目前没有一个自动配置解决方案。 系统管理员可能的一些方法分发应用程序用户如下:

    • Google play
    • 其他商店
    • 其他方式,比如邮件或者网站
  • 系统提示用户启用设备管理应用程序, 当发生这种情况取决于应用程序是如何实现的。

  • 一旦用户启用设备管理应用程序,它们是其政策。遵守这些政策通常带来好处,比如 对敏感系统和数据的访问。

如果用户不启用设备管理应用程序,它仍然是在设备上,但是在一个不活跃的状态。 用户将不受其政策,他们将针对积极心态相反没有得到任何应用程序的例子,他们可能无法同步数据。

如果用户未能遵守政策(例如,如果一个用户设置一个 密码,违反了准则),它是由应用程序来决定 如何处理这个问题。 然而,这通常会导致用户不 能同步数据。

如果一个设备试图连接到服务器,需要政策 在设备管理API,支持连接不会 被允许。 设备管理API目前并不允许部分 供应。 换句话说,如果一个设备(例如,一个遗留设备) 不支持所有的既定政策,允许没有办法 设备连接。

如果一个设备包含多个管理员启用应用程序,严格的政策 执行。 没有办法目标特定的管理 应用程序。

卸载现有设备管理应用程序中,用户需要 先注销程序作为管理员。

翻译有点蹩脚哈,但是大概的意思就是你激活之后他就是一个政策,但是你不激活,也是可以的,只是出于静止状态,卸载这个应用之前你就需要先注销设备管理权限

那我们应该怎么做呢?他的政策比较多,我们大致的看一下

四.一键锁屏

OK,我们说了这么多概念,倒不如直接用代码说明

  • 接下来我们就跟随者文档来实现

其实官方文档说的十分的详细,首先我们要定义一个Receiver让他继承DeviceAdminReceiver,我们暂时不是实现它

package com.lgl.lockone;import android.app.admin.DeviceAdminReceiver;/*** 锁屏* Created by LGL on 2016/7/24.*/
public class LockReceiver extends DeviceAdminReceiver{}

然后我们需要定义清单文件

 <receiver android:name=".LockReceiver"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>

这里有必要要说一下了,首先是label,说标题,这个应该大家都知道,然后是description描述,当你激活设备的时候就会去请求,你就可以看到了,最后要绑定一个权限文件,我们在res下new一个xml文件夹,新建一个device_admin_sample

<?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>

OK,这些做完了之后我们先去最简单的实现一下锁屏,需要用到DevicePolicyManager

package com.lgl.lockone;import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;public class MainActivity extends AppCompatActivity {private Button btnLock;private DevicePolicyManager mDPM;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//设备政策管理器mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);btnLock = (Button) findViewById(R.id.btnLock);btnLock.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//锁屏mDPM.lockNow();}});}
}

其实这里就一个按钮,然后去lockNow请求锁屏,但是你会发现,他报错了,提示是没有权限,这个权限可以不是用户的权限,我们去设备管理器里面看一下

这里,就有我们的应用了,上面就是我们在清单里面定义的标题和描述了,我们勾选上,再去实现锁屏,你会发现就可以了,这就是需要我们手动去打开了,但是用户大多数是不会知道这回事的,所以我们一启动程序我们应该就去激活,文档上其实也已经写了,我们来看

ComponentName mDeviceAdminSample = new ComponentName(this, LockReceiver.class);Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample);intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"我是不是很帅");startActivity(intent);

然后我们再来看下效果

而且我们可以更改锁屏密码

 //重置密码mDPM.resetPassword("12345678", 0);

如果传空串那就说明不要密码,我们可以再次运行一下

OK,我们来看下主页的逻辑吧

package com.lgl.lockone;import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;public class MainActivity extends AppCompatActivity {private Button btnLock;private DevicePolicyManager mDPM;private ComponentName mDeviceAdminSample;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mDeviceAdminSample = new ComponentName(this, LockReceiver.class);//设备政策管理器mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);btnLock = (Button) findViewById(R.id.btnLock);btnLock.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (mDPM.isAdminActive(mDeviceAdminSample)) {//锁屏mDPM.lockNow();//重置密码mDPM.resetPassword("123456", 0);} else {Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample);intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"我是不是很帅");startActivity(intent);}}});}
}

基本上没什么代码,如果大家有兴趣可以加群

通往Android的神奇之旅:555974449

Demo下载:http://download.csdn.net/detail/qq_26787115/9584891

Android Device Administration 设备管理器——实现一键锁屏相关推荐

  1. Android激活设备管理器--一键锁屏

    激活设备管理器就是把系统的某些权力例如锁屏,链接蓝牙等功能交给某个应用来执行.也就是说,如果想要某个应用执行某些系统超级管理员才能执行的功能时,就需要让这个应用激活设备管理器.此时该应用就拿到了系统管 ...

  2. 简单几步实现Android 一键锁屏,一键卸载程序,一键激活设备管理权限

    2019独角兽企业重金招聘Python工程师标准>>> 以下为官方的文档(本人能力有限,尝试着翻译下,有错请指出) 不想看文档可以直接拉到后面,代码将在后面贴出 Developing ...

  3. DevicePolicyManager(三)设备管理器使用案例——实现一键锁屏

    1.实现一键锁屏关键是DevicePolicyManager这个类,然后使用lockNow():方法. 2.DevicePolicyManager类,可以让你的做软件获得系统级别的操作,例如锁屏,恢复 ...

  4. Android简易实战教程--第五话《开发一键锁屏应用》

    转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/51860900 点击打开链接 Device Administration 对于这个应 ...

  5. Android一键锁屏代码

    锁屏小Demo 由于手机关机键最近不好用了,所以就研究研究一键锁屏的小玩意. 首先创建一个工程 布局很简单,就一个button <?xml version="1.0" enc ...

  6. Android一键锁屏的实现

    1.首先创建类AdminReceiver继承DeviceAdminReceiver 该方式可以什么都不写~ 2.在AndroidManifest.xml中注册 <!-- 设备管理 --> ...

  7. Android一键锁屏功能的实现

    前不久换了部新手机,因为原来用的手机原装了一键锁屏的应用,用的还习惯,新手机上没有,就想着找一个装上,后来在网上搜了下一键锁屏的实现,自己拿来改了改,安装后感觉还可以.现在分享出来. 源码: 1. M ...

  8. android 一键锁屏和清除手机数据

    一键锁屏&清除数据_50 1.引入设备超级管理员(device admin) 2.看文档Develop-->API Guides--->Administration 如果你是一个企 ...

  9. android 一键锁屏

    为了大家少走弯路,也是为了相互交流,多结识一些朋友!我在这里贴出来:android手机上的一键锁屏程序具体代码及注意的问题, 下面就以我的工程为例进行详细说明: 工程结构 LockScreen.jav ...

最新文章

  1. 2021年中国工业互联网安全大赛核能行业赛道writeup之Webshell密码
  2. 为什么说混合云是新基建的流行架构?文末彩蛋!
  3. 计算机应用基础是高中吗,职业高中学业水平测试计算机应用基础试卷(A)及答案...
  4. 用纯C面向过程写icefox3的代码
  5. J - 数据结构实验:哈希表
  6. Android NDK学习笔记4:JNI访问Java构造函数
  7. 又双叒叕一个软件安装方法
  8. 华为云DevCloud为开发者提供高效智能的可信开发环境
  9. 使用python制作ArcGIS插件(3)ArcPy的使用说明
  10. mac 强制退出程序_Mac OS系统如何强制退出应用程序
  11. CImage不失真缩放显示图片
  12. 计算软件介绍siesta、vasp、wien2k、PWSCF、Materials Studio
  13. iconfont图标引入
  14. 【Opencv实战】这是我见过的最强大“美颜滤镜”,代码美颜傻瓜式一键操作~(附源码)
  15. word另存为pdf后,pdf文件中有空白页
  16. 乐学python靠谱吗_【乐学100】-乐学100怎么样|地址|成立时间-比网校
  17. 【华为云技术分享】Linux内核发展史 (1)
  18. 郑强上任后,太原理工大学不断引援!
  19. 服务器的部署与Web项目的发布
  20. java 水波纹_java实现水波纹扩散效果

热门文章

  1. java练习 输出100以内的质数
  2. redhat linux错误,redhat linux 5 出错,跪求各位大师,急死了啊
  3. 【微信小程序】列表渲染wx:for
  4. 第七篇 亚龙236 led 16*32点阵显示显示汉字
  5. 记录解决RuntimeError: Sizes of tensors must match except in dimension 1. Expected size 27 but got size
  6. 互联网协议 — TCP — 拥塞控制
  7. 基于51单片机的 Proteus液晶显示LM016L仿真
  8. 解析:云计算应用现状与关键技术
  9. cisco路由器用户名密码破解
  10. 登陆cf出现1.php,cf兄弟礼包验证码 一个PHP验证码类代码分享已封装成类