Android设备管理器
关于这个东西有神魔用,我现在只知道一个xml文件上的功能都能够完成,如下:
<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>
我也只用过 <reset-password /> <force-lock /> <wipe-data /> 这三个功能
关于如何使用?这里写个步骤会看的简单一点:
First, 整一个类继承 DeviceAdminReceiver ,DeviceAdminReceiver是个广播接收者(看name应该也能猜出吧)
Second, 在清单文件中注册自己刚刚建立的广播接收者,在注册时要注意在 meta-data 中要写入一个xml 的文件其实就是我们上面的那个功能文件表
Third,启动我们的设备管理器并使用相关的功能
下面看代码学习:
第一步:
这里我并未实现 DeviceAdminReceiver 的任何方法,但是我们仍然可以用上面列表中的功能
public class DeviceAdmin extends DeviceAdminReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub super.onReceive(context, intent); System.out.println(); } }
第二部:
这里是一个 广播接收者的注册,注意红色的两行
<receiver android:name="com.example.broadcastreceiver.DeviceAdmin" android:description="@string/sample_device_admin_description" android:label="@string/sample_device_admin" 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>
第三步:
mDevicePolicyManager=(DevicePolicyManager)arg0.getSystemService(Context.DEVICE_POLICY_SERVICE);
mComponentName=new ComponentName(arg0, DeviceAdmin.class);
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mComponentName); intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "设备管理器"); startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN);
使用功能
if (mDevicePolicyManager.isAdminActive(mComponentName)) { mDevicePolicyManager.lockNow(); // 锁屏同时清除密码 System.out.println("LOCKSCREEN" + "我执行了"); mDevicePolicyManager.resetPassword("789", 0);
}
if (mDevicePolicyManager.isAdminActive(mComponentName)) {
mDevicePolicyManager.lockNow();
mDevicePolicyManager.wipeData(0);
}
如上,简单的设备管理器功能就使用了。
关于设备管理器注册时不声明为android.app.action.DEVICE_ADMIN_ENABLED 也能够执行我会再写一篇查看