Android手机一般不用时,都会通过电源键来锁定屏幕同时关闭屏幕灯。 其实从API Level 8 (也就是Android 2.2) 开始, Android提供了DevicePolicyManager类, 可以让你的应用程序也能执行屏幕锁定等操作。 锁定效果: ![]()
下面我们来看一下具体如何操作。 要让自己的应用实现该屏幕锁定,主要需要用到以下几个类: DevicePolicyManager这是设备管理的主类。通过它可以实现屏幕锁定、屏幕亮度调节、出厂设置等功能。 DeviceAdminReceiver该类继承自 BroadcastReceiver 。 从源码可以看到,其实就是实现了一个OnReceive方法,该方法中根据不同的Action,执行相应的操作。 比如,如果激活成功,那么Action就是ACTION_DEVICE_ADMIN_ENABLED, 据此调用 onEnabled 方法。 系统源码:
下面我们就来看下如何实现屏幕锁定。注意,此处讲的屏幕锁定, 其实还是调用的系统的锁定方式。在 "设置" - “位置与安全” - "更改屏幕锁定" 中可以设置锁定方式,一共有四种:1. 无锁2. 图案锁 (就是九宫图)3. PIN锁4. 密码锁你的手机设置了哪个锁, 调用这个API时就会显示哪个锁 !(锁定类型设置画面) ![]()
效果图: ![]()
其中: AdminReceiver 类的代码如下:
继承了DeviceAdminReceiver,没有做什么特别操作,仅仅在激动、禁用时输出一个提示消息。同时,像普通Broadcast类一样,该类也需要在AndroidManifest.xml 文件中注册。如下:
其中 android:permission="android.permission.BIND_DEVICE_ADMIN" 和<intent-filter><action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /></intent-filter>是必须的。android:resource="@xml/lock_screen" 对应的就是权限说明文件。本次仅需要强制锁定权限。 如下:
这边就是用了一个隐式Intent ,通过这个Intent (DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN)跳转到 权限提醒页面。 同时传递了两个参数EXTRA_DEVICE_ADMIN 、 EXTRA_ADD_EXPLANATION。EXTRA_DEVICE_ADMIN参数中说明了用到哪些权限, EXTRA_ADD_EXPLANATION参数为附加的说明。就这样,一个激活功能就完成了。 激活页面如下: ![]()
禁用时 AdminReceiver 类的onDisabled方法会被调用。3. “系统锁” 其实到这已经非常简单了,所有的配置及初始化,都在激活时做了。 下面直接上调用系统锁的代码:
到此为止, 屏幕锁定结束了。附上主要类的代码:
最后说一下,设备管理拥有的权限,一共就5个。看配置文件中的说明吧。
所有权限都申请时的效果图: ![]() |
利用DevicePolicyManager执行屏幕锁定
最新推荐文章于 2020-08-04 13:21:49 发布