本文共 2053 字,大约阅读时间需要 6 分钟。
锁屏和清除数据需要的权限比较高,需要先激活设备管理器策略,使应用程序获得权限
1.创建device-admin的xml文件,用来声明要申请的权限
2.自定义DeviceAdminReceiver的子类MyAdminReceiver(设备权限广播接收)
3.清单文件配置该广播,指定device-admin的xml文件
4.使用MyAdminReceiver创建ComponentName来开启权限申请页面
device_admin_sample.xml 声明要申请的权限
MyAdminReceiver.java
package com.itheima.mobilesafe.receiver;import android.app.admin.DeviceAdminReceiver;/** * 给应用程序添加的设备管理员 * @author Administrator * */public class MyAdminReceiver extends DeviceAdminReceiver { }清单文件配置
开启权限申请activityMyAdminReceiver" android:description="一键锁屏描述信息" android:label="一键锁屏" android:permission="android.permission.BIND_DEVICE_ADMIN" > device_admin_sample" />
private ComponentName cn;cn = new ComponentName(Settings04Activity.this, MyAdminReceiver.class);Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, cn);intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "开启管理员策略之后,可以一键锁屏、远程删除数据");//打开激活管理员策略的界面startActivity(intent);激活界面
private DevicePolicyManager dpm;bool bActive = dmp.isAdminActive(new ComponentName(Settings04Activity.this, MyAdminReceiver.class));//判断是否激活设备策略权限dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);//删除数据dpm.wipeData(0);//0表示恢复原厂设置 ,dpm.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE);//格式化SD卡 System.out.println("远程锁屏..................");//一键锁屏dpm.lockNow();//设置解屏密码dpm.resetPassword("123", 0);
ComponentName cn = new ComponentName(this, MyAdmin.class); //可以移除管理员 dpm.removeActiveAdmin(cn); Intent intent = new Intent(); intent.setAction("android.intent.action.UNINSTALL_PACKAGE"); intent.addCategory("android.intent.category.DEFAULT"); intent.setData(Uri.parse("package:"+getPackageName())); startActivity(intent);