This class is used to specify meta information of a device administrator component.

再不懂的可以在网上查下,以下是在网上查到的,贴出来:

DevicePolicyManager

这是设备管理的主类.通过它可以实现屏幕锁定、屏幕亮度调节、出厂设置等功能.

DeviceAdminReceiver

该类继承自 BroadcastReceiver . 从源码可以看到,其实就是实现了一个OnReceive方法,该方法中根据不同的Action,执行相应的操作. 比如,如果激活成功,那么Action就是ACTION_DEVICE_ADMIN_ENABLED, 据此调用 onEnabled 方法.

DeviceAdminInfo

包括设备信息,Info,就是Information嘛,呵,,乱猜也可以猜到,至于里面什么属性,到时候朋友们可以直接"."下就知道啦.

比如:

DeviceAdminReceiver.USES_POLICY_FORCE_LOCK , 这个就是本次要用的"强制锁定屏幕"的权限. 不过这些权限一般都直接通过XML文件来定义. 稍后你就会看到.

Android手机中手机屏幕的锁定方式有以下几种 ,不文字描述了,直接上图,看着爽

android应用上锁_android

以下是拖的布局,因为只讲功能,界面就不说什么美观不美观了,拖三个按钮,三个按钮看按钮上的的文本内容就知道是用在什么地方的, 不多讲,今天先测试下系统锁,因为没学会走呢,就先不去学跑了,大伙跟着一起慢慢来,先从简单的开始吧.

界面效果如下:

android应用上锁_android_02

点击第一个按钮会跳到权限提醒页面,如图所示:

android应用上锁_小马_03

上面这个页面只是提醒你你要激活的所有设备权限,点击激活后会跳回首页,再去点击系统锁使用时,就达到咱们的目的啦,吼吼。。如图所示

android应用上锁_Android_04

光看我做的效果可不行,大家别忘了在全局配置文件里面配置,不然报错的,添加以下代码:

<receiver

android:name\=".AdminReceiver"

android:description\="@string/description"

android:label\="@string/labelValue"

android:permission\="android.permission.BIND\_DEVICE\_ADMIN"

>

<meta-data

android:name\="android.app.device\_admin"

android:resource\="@xml/lockourscreen"/>

<intent-filter>

<action android:name="android.app.action.DEVICE\_ADMIN\_ENABLED" />

</intent-filter>

</receiver>

下面我贴出完整的代码,供朋友们学习使用,有不懂之处,可直接提出疑问,我们共同交流:

主类:

package com.xiaoma.www;

  import com.xiaoma.www.R;

  import android.app.Activity;

  import android.app.admin.DevicePolicyManager;

  import android.content.ComponentName;

  import android.content.Context; import android.content.Intent;

  import android.os.Bundle;

  import android.util.Log;

  import android.view.View;

  import android.view.View.OnClickListener;

  import android.widget.Button;

  /\*\*

  \* @Title: DevicePolicyManagerDemoActivity.java

  \* @Package com.xiaoma.www

  \* @Description: 屏幕锁测试

  \* @author MZH

  \* @version V2.2

  \*/

  public class DevicePolicyManagerDemoActivity extends Activity {

  private Button startPermissionBtn;

  private Button stopPermissionBtn;

  private Button sysLockBtn;

  private DevicePolicyManager dpm;

  private ComponentName componentName ;

  /\*\* Called when the activity is first created. \*/

  @Override

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  //初始化

  init();

  }

  /\*\*

  \* 初始化实现

  \*/

  private void init(){

  //资源声明定位

  startPermissionBtn = (Button)findViewById(R.id.button1);

  stopPermissionBtn \= (Button)findViewById(R.id.button2);

  sysLockBtn \= (Button)findViewById(R.id.button3);

  startPermissionBtn.setOnClickListener(listener);

  stopPermissionBtn.setOnClickListener(listener);

  sysLockBtn.setOnClickListener(listener);

  //取得系统服务

  dpm  = (DevicePolicyManager)getSystemService(Context.DEVICE\_POLICY\_SERVICE);

  componentName \= new ComponentName(this, AdminReceiver.class);

  }

  /\*\*

  \* 按钮监听器的实现,此处小马讲下,在实现监听的时候不要在一个分支里面写太多逻辑处理

  \* 分支只负责分支,不负责处理,要处理的话可以模块化,处理函数抽出去就可以了

  \* 小马希望大家从一开始就养成个好习惯,吼吼..

  \*/

  private OnClickListener listener = new OnClickListener() {

  @Override

  public void onClick(View v) {

  //以下是三个按钮分别处理的事件实现

  switch (v.getId()) {

  case R.id.button1:

  //开启设备权限

  startDeviceManager();

  break;

  case R.id.button2:

  //停止设备权限

  stopDeviceManager();

  break;

  case R.id.button3:

  //调用系统锁

  sysLock();

  break;

  default:

  break;

  }

  }

  };

  /\*\*

  \* 启动设备管理权限

  \*/

  private void startDeviceManager(){

  //添加一个隐式意图,完成设备权限的添加

  //这个Intent (DevicePolicyManager.ACTION\_ADD\_DEVICE\_ADMIN)跳转到 权限提醒页面

  //并传递了两个参数EXTRA\_DEVICE\_ADMIN 、 EXTRA\_ADD\_EXPLANATION

  Intent intent = new Intent(DevicePolicyManager.ACTION\_ADD\_DEVICE\_ADMIN);

  //权限列表

  //EXTRA\_DEVICE\_ADMIN参数中说明了用到哪些权限,

  intent.putExtra(DevicePolicyManager.EXTRA\_DEVICE\_ADMIN, componentName);

  //描述(additional explanation)

  //EXTRA\_ADD\_EXPLANATION参数为附加的说明

  intent.putExtra(DevicePolicyManager.EXTRA\_ADD\_EXPLANATION, "--小马坏,小马爱,小马瓜瓜怪--");             

     startActivityForResult(intent, 0);

  }

  /\*\*

  \* 禁用设备管理权限方法实现

  \*/

  private void stopDeviceManager(){

  Log.i("XiaoMaGuo","------ unActiveManage ------");

  boolean active = dpm.isAdminActive(componentName);

  if (active) {

  dpm.removeActiveAdmin(componentName);

  }

  }

  /\*\*

  \* 调用系统锁方法实现

  \*/

  private void sysLock(){

  boolean active = dpm.isAdminActive(componentName);

  if (active) {

  dpm.lockNow();

  }

  }

  }

接收类:

package com.xiaoma.www;

  import android.app.admin.DeviceAdminReceiver;

  import android.app.admin.DevicePolicyManager;

  import android.content.ComponentName;

  import android.content.Context;

  import android.content.Intent;

  import android.os.IBinder;

  import android.util.Log;

  import android.widget.Toast;

  public class AdminReceiver extends DeviceAdminReceiver {

  @Override

  public DevicePolicyManager getManager(Context context) {

  Log.i("XiaoMaGuo", "调用了getManager()方法");

  return super.getManager(context);

  }

  @Override

  public ComponentName getWho(Context context) {

  Log.i("XiaoMaGuo", "调用了getWho()方法");

  return super.getWho(context);

  }

  /\*\*

  \* 禁用

  \*/



### 面试复习笔记

这份资料我从春招开始,就会将各博客、论坛。网站上等优质的Android开发中高级面试题收集起来,然后全网寻找最优的解答方案。每一道面试题都是百分百的大厂面经真题+最优解答。包知识脉络 + 诸多细节。
节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

**《960页Android开发笔记》**

![]()

**《1307页Android开发面试宝典》**

包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

![]()

**《507页Android开发相关源码解析》**

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

![]()



**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里获取]()**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

开发相关源码解析》**

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

[外链图片转存中...(img-Sa3X6anj-1714403456847)]



**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里获取]()**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**