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;
}
}
}

以上。如有错误和疑问,欢迎指正提出。