赞
踩
有时候我们在一些酒店里看到一些控制设备的pad,当我们点击关闭按钮会关闭设备的同时把pad的屏幕给熄灭,我们今天就来尝试实现点击按钮熄灭屏幕这个功能。
1.在res下创建xml文件夹,创建一个lock_screen.xml的资源文件,源码如下:
<?xml version="1.0" encoding="utf-8"?>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<uses-policies>
<!--锁定屏幕-->
<force-lock />
</uses-policies>
</device-admin>
2.创建一个广播接收器并继承DeviceAdminReceiver
public class LockReceiver extends DeviceAdminReceiver {
@Override
public void onEnabled(Context context, Intent intent) {
super.onEnabled(context, intent);
}
@Override
public void onDisabled(Context context, Intent intent) {
super.onDisabled(context, intent);
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
}
}
在AndroidManifest里面注册这个广播接收器
<!--熄屏-->
<receiver android:name=".utils.LockReceiver"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data android:name="android.app.device_admin"
android:resource="@xml/lock_screen" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
3.授权管理权限
在源码中我们需要手动授权管理权限,应用首次安装的时候会跳出一个授权的弹框,选择“允许”
//熄屏需要
private DevicePolicyManager policyManager;
private ComponentName componentName;
//==============熄屏================
private void lockScreen() {
if (policyManager.isAdminActive(componentName)) {
policyManager.lockNow();
}
}
private void activeManager() {
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "screenLock");
startActivity(intent);
}
//==============熄屏================
在声明周期的方法里面判断时候已经授权过管理权限
if (!policyManager.isAdminActive(componentName)) {
activeManager();
}
最后,在按钮的点击事件中调用lockScreen()方法就能够实现熄屏的功能。
注意:当我们在卸载这个应用的时候需要取消前面授权的管理权限,不然会提示无法卸载
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。