admin管理员组

文章数量:1539107

锁屏和清除数据需要的权限比较高,需要先激活设备管理器策略,使应用程序获得权限

激活设备管理策略

步骤:

1.创建device-admin的xml文件,用来声明要申请的权限

2.自定义DeviceAdminReceiver的子类MyAdminReceiver(设备权限广播接收)

3.清单文件配置该广播,指定device-admin的xml文件

4.使用MyAdminReceiver创建ComponentName来开启权限申请页面

示例代码

device_admin_sample.xml 声明要申请的权限

<?xml version="1.0" encoding="utf-8"?>
<device-admin xmlns:android="http://schemas.android/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>

MyAdminReceiver.java

package com.itheima.mobilesafe.receiver;

import android.app.admin.DeviceAdminReceiver;

/**
 * 给应用程序添加的设备管理员
 * @author Administrator
 *
 */
public class MyAdminReceiver extends DeviceAdminReceiver {

	
}
清单文件配置

<receiver
            android:name="com.itheima.mobilesafe.receiver.<span style="color:#ff0000;">MyAdminReceiver</span>"
            android:description="一键锁屏描述信息"
            android:label="一键锁屏"
            android:permission="android.permission.BIND_DEVICE_ADMIN" >
            <meta-data
                android:name="android.app.device_admin"
                android:resource="@xml/<span style="color:#ff0000;">device_admin_sample</span>" />

            <intent-filter>
                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
            </intent-filter>
        </receiver>
开启权限申请activity

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(<span style="font-family: Arial, Helvetica, sans-serif;">new ComponentName(Settings04Activity.this, MyAdminReceiver.class)</span>);//判断是否激活设备策略权限
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);







本文标签: 数据