PART_A实现设备管理器的广播接收者
-
自定义广播接收者,继承
DeviceAdminReceiver
,获取设备管理器权限.public class AdminReceiver 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 onPasswordChanged(Context context, Intent intent) { super.onPasswordChanged(context, intent); } }
-
res>xml目录下配置需要申请的权限
<device-admin> <!--limit-password 设置密码的规则--> <!--watch-login 监控屏幕解锁尝试次数--> <!--reset-password 更改屏幕解锁密码--> <!--force-lock 设备自动锁屏--> <!--wipe-data 删除全部的数据--> <uses-policies> <limit-password /> <watch-login /> <reset-password /> <force-lock /> <wipe-data /> <expire-password /> <encrypted-storage /> <disable-camera /> </uses-policies> </device-admin>
-
清单文件中配置广播接收者
<receiver android:name=".lock.AdminReceiver" android:label="一键锁屏Demo" android:permission="android.permission.BIND_DEVICE_ADMIN" > <meta-data android:name="android.app.device_admin" android:resource="@xml/device_admin_sample" /> <intent-filter> <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> </intent-filter> </receiver>
PART_BJava实现
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private DevicePolicyManager mDPM; // 设备策略管理器
private ComponentName mComponent; // 组件
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取设备策略管理器
mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
// 初始化组件,申请权限
mComponent = new ComponentName(this, AdminReceiver.class);
findViewById(R.id.bt_openAdmin).setOnClickListener(this);
findViewById(R.id.bt_lock).setOnClickListener(this);
findViewById(R.id.bt_uninstall).setOnClickListener(this);
findViewById(R.id.bt_rmSD).setOnClickListener(this);
findViewById(R.id.bt_return).setOnClickListener(this);
// 桌面快速一键锁屏
// mDPM.lockNow();
// finish();
}
@Override
public void onClick(View view) {
switch (view.getId()) {
/**
* 激活超级管理员权限
*/
case R.id.bt_openAdmin:
if (mDPM.isAdminActive(mComponent)) {
Toast.makeText(this, "超级管理员权限已激活", Toast.LENGTH_SHORT).show();
} else {
Intent inOpenAdmin = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
inOpenAdmin.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mComponent);
inOpenAdmin.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "激活超级管理员权限");
startActivity(inOpenAdmin);
}
break;
/**
* 一键锁屏
*/
case R.id.bt_lock:
if (mDPM.isAdminActive(mComponent)) {
mDPM.lockNow(); // 锁屏
mDPM.resetPassword("", 0); // 重置锁屏密码o(∩_∩)o..
} else {
Toast.makeText(this, "请先激活超级管理员权限", Toast.LENGTH_SHORT).show();
}
break;
/**
* 应用卸载
*/
case R.id.bt_uninstall:
mDPM.removeActiveAdmin(mComponent); // 删除管理员权限
Intent inUninstall = new Intent(Intent.ACTION_VIEW);
inUninstall.addCategory(Intent.CATEGORY_DEFAULT);
inUninstall.setData(Uri.parse("package:" + getPackageName())); // 传入要卸载的APP包
startActivity(inUninstall);
break;
/**
* 清除SD卡内容
*/
case R.id.bt_rmSD:
if (mDPM.isAdminActive(mComponent)) {
mDPM.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE);
} else {
Toast.makeText(this, "请先激活超级管理员权限", Toast.LENGTH_SHORT).show();
}
break;
/**
* 恢复出厂设置
*/
case R.id.bt_return:
if (mDPM.isAdminActive(mComponent)) {
mDPM.wipeData(0);
} else {
Toast.makeText(this, "请先激活超级管理员权限", Toast.LENGTH_SHORT).show();
}
break;
}
}
}
以上。如有错误和疑问,欢迎指正提出。 catface.wyh@gmail.com