人无聊的时候总是喜欢研究点小玩意,所以就敲了个一键锁屏的Demo。下面直接上代码:
1.在MainAcitivty中的代码如下:
private DevicePolicyManager policyManager; private ComponentName componentName; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取设备管理服务 policyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); //AdminReceiver 继承自 DeviceAdminReceiver componentName = new ComponentName(this, AdminReceiver.class); mylock(); // killMyself ,锁屏之后就立即kill掉我们的Activity,避免资源的浪费; android.os.Process.killProcess(android.os.Process.myPid()); } private void mylock(){ boolean active = policyManager.isAdminActive(componentName); if(!active){//若无权限 activeManage();//去获得权限 policyManager.lockNow();//并锁屏 } if (active) { policyManager.lockNow();//直接锁屏 } } private void activeManage() { // 启动设备管理(隐式Intent) - 在AndroidManifest.xml中设定相应过滤器 Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); //权限列表 intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName); //描述(additional explanation) intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "------ 其他描述 ------"); startActivityForResult(intent, 0); }
2.继承DeviceAdminReceiver,只需要继承,不需要写任何代码。
public class AdminReceiver extends DeviceAdminReceiver{ }
3.注册广播
<application android:icon="@mipmap/ss" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/Theme.AppCompat.Light.NoActionBar" > <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <!-- 设备管理 --> <receiver android:name=".AdminReceiver" android:label="@string/app_name" android:description="@string/app_name" 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> </application>
4.在res目录下创建xml文件夹,在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 /> <!-- 清除所有数据(恢复出厂设置) --> <wipe-data /> <!-- 重置密码 --> <reset-password /> <!-- 限制密码选择 --> <limit-password /> <!-- 监控登录尝试 --> <watch-login /> </uses-policies> </device-admin>
好了,大功告成了。