<receiver android:name="com.cbooy.mmpa.receiver.MyAdmin" 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>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android"> <uses-policies> <limit-password /> <watch-login /> <reset-password /> <force-lock /> <wipe-data /> <expire-password /> <encrypted-storage /> <disable-camera /> </uses-policies> </device-admin>
public class LockScreenUtil { private static Context context = null; /** * 設置策略服務 */ private static DevicePolicyManager dpm = null; private LockScreenUtil(){ } public static LockScreenUtil inst(Context ct) { context = ct; dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE); return new LockScreenUtil(); } /** * 開啓鎖屏,先判斷是否開啓權限 */ public void lockScreen(){ ComponentName who = new ComponentName(context,MyAdmin.class); if(dpm.isAdminActive(who)){ // 鎖屏 dpm.lockNow(); //設置屏蔽密碼 dpm.resetPassword("123", 0); //清除Sdcard上的數據 // dpm.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE); }else{ // 沒有權限,須要先開通 Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, who); //開啓管理員權限 intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"一鍵鎖屏"); context.startActivity(intent); } } public void removePermission() { // 1.先清除管理員權限 ComponentName mDeviceAdminSample = new ComponentName(context,MyAdmin.class); dpm.removeActiveAdmin(mDeviceAdminSample); // 2.普通應用的卸載 Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.setData(Uri.parse("package:" + context.getPackageName())); context.startActivity(intent); }