private DevicePolicyManager policyManager;
private ComponentName componentName; //一键锁屏
public void lockWindow(View view) {
policyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
componentName = new ComponentName(this, LockReceiver.class);
if (policyManager.isAdminActive(componentName)) {
policyManager.lockNow();
android.os.Process.killProcess(android.os.Process.myPid());
} else {
activeManager();
}
}
public class LockReceiver extends DeviceAdminReceiver {
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent); }
@Override
public void onEnabled(Context context, Intent intent) {
//激活使用
super.onEnabled(context, intent);
}
@Override
public void onDisabled(Context context, Intent intent) {
//取消激活
super.onDisabled(context, intent);
}
}
<!-- 注册锁屏广播 -->
<receiver
android:name=".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>
<?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>
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, "一键锁屏");
startActivity(intent);
}
@Override
protected void onResume() {
super.onResume();
/**
* @author David created at 2016/11/9 11:59
* 当你第一次激活锁屏功能后实现锁屏
*/
if (policyManager != null && policyManager.isAdminActive(componentName)) {
policyManager.lockNow();
android.os.Process.killProcess(android.os.Process.myPid());
}
}