锁屏代码,有个问题,在锁屏后,屏幕还是会亮起,只不过是锁定状态而已,并不会关闭屏幕。
在需要锁屏地方使用以下代码:
DevicePolicyManager policyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName componentName = new ComponentName(MainActivity.this,
LockReceiver.class);
if (policyManager.isAdminActive(componentName)) {// 判断是否有权限(激活了设备管理器)
policyManager.lockNow();
// 直接锁屏 // android.os.Process.killProcess(android.os.Process.myPid());
} else {
activeManager(componentName);
// 激活设备管理器获取权限
}
private void activeManager(ComponentName componentName) {
// 使用隐式意图调用系统方法来激活指定的设备管理器
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "锁屏");
startActivity(intent);
}
注册一个Receiver
配置权限文件lock_screen.xml,将文件放置在/res/xml/下
【Android 锁屏(设备管理)】
实现Receiver
package com.huron.xx;
import android.app.admin.DeviceAdminReceiver;
import android.content.Context;
import android.content.Intent;
public class LockReceiver extends DeviceAdminReceiver { @Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
System.out.println("onreceiver");
} @Override
public void onEnabled(Context context, Intent intent) {
System.out.println("激活使用");
super.onEnabled(context, intent);
} @Override
public void onDisabled(Context context, Intent intent) {
System.out.println("取消激活");
super.onDisabled(context, intent);
}}