安卓学习笔记之使用设备管理器(Administrator)
2016-03-27 13:44
417 查看
安卓学习笔记之使用设备管理器(Administrator)
设备管理器的作用:.锁定屏幕<force-lock> .擦除数据<wipe-data>(或恢复出厂设置) .设置密码状态(重置密码 <reset-password>、限制密码长度<limit-password>、密码过期时间<expire-password>等) .监视登录状态<watch-login> .禁用摄像头<disable-camera> .加密存储<encrypted-storage> .禁用锁屏相关特性<disable-keyguard-features /> .等
使用设备管理器的步骤:
1、获取设备管理器DevicePolicyManager = policyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); //获取设备管理器 ComponentName componentName = new ComponentName(this, AdminReceiver.class); //创建设备组件 需要创建AdminReceiver
2.创建AdminReceiver
public class AdminReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { } }
3.在src目录下创建xml文件夹 并创建device_admin.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 /> <disable-keyguard-features /> </uses-policies> </device-admin>
4、在values目录的strings文件中创建设备名称与描述
<resources> <string name="admin_description">设备管理器功能描述</string> <string name="admin">设备管理器名称</string> </resources>
5、AndroidManifest.xml中声明AdminReceiver
<receiver android:name="com.yu.onekeylock.AdminReceiver" android:description="@string/admin_description" android:label="@string/admin" <!-声明需要的权限--> android:permission="android.permission.BIND_DEVICE_ADMIN" > <meta-data android:name="android.app.device_admin" android:resource="@xml/device_admin" /> <intent-filter> <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> </intent-filter> </receiver>
6、使用设备管理器
在使用之前,需要判断是否激活
public void doit(View view) { // 判断设备管理器是否激活 if (policyManager.isAdminActive(componentName)) { policyManager.lockNow(); // 锁屏 // policyManager.resetPassword("123456", 0); //重置密码 // policyManager.wipeData(flags); finish(); }else{ Toast.makeText(MainActivity.this , "必须先激活设备管理器!", 1).show(); activateManage(); } }
激活设备管理器:
private void activateManage() { // 隐式启动 Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); //附加数据 intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName); //描述 intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "激活后可以方便锁屏等操作"); startActivity(intent); }
激活设备管理器后就可以进行相关功能操作了
policyManager.lockNow(); // 锁屏 // policyManager.resetPassword("123456", 0); //重置密码 // policyManager.wipeData(flags); ...
注:要卸载应用时,需先取消激活设备管理器
public void unInstall(View view) { // 取消激活 policyManager.removeActiveAdmin(componentName); // 卸载程序 Intent intent = new Intent(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setData(Uri.parse("package:" + getPackageName())); startActivity(intent); }
Admin工具类:
/** * <br/>Author: pecuyu * <br/>Date: 2017/12/8 * <br/>TODO:Admin工具类 */ public class AdminUtil { private Context mContext; private final DevicePolicyManager policyManager; private final ComponentName componentName; public AdminUtil(Context context) { mContext = context; policyManager = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE); componentName = new ComponentName(context, AdminReceiver.class); } public void activateAdmin() { // 隐式启动 Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); //附加数据 intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName); //描述 intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "激活后可以方便锁屏等操作"); mContext.startActivity(intent); } public void uninstall() { // 取消激活 policyManager.removeActiveAdmin(componentName); // 卸载程序 Intent intent = new Intent(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setData(Uri.parse("package:" + mContext.getPackageName())); mContext.startActivity(intent); } // 判断设备管理器是否激活 public boolean isAdminActive() { return policyManager.isAdminActive(componentName); } public void lockNow() { policyManager.lockNow(); // 锁屏 } public void disableCamera(boolean enable) { policyManager.setCameraDisabled(componentName, enable); } /** * * @param flags * {@link DevicePolicyManager#WIPE_EXTERNAL_STORAGE} and { * @link DevicePolicyManager#WIPE_RESET_PROTECTION_DATA}. */ public void wipeData(int flags) { policyManager.wipeData(flags); } /** * 关闭特性功能 * * @param which which feature to disable <br/> * know features: <br/> * <br/>{@link DevicePolicyManager#KEYGUARD_DISABLE_FEATURES_NONE} (default), * <br/>{@link DevicePolicyManager#KEYGUARD_DISABLE_WIDGETS_ALL}, * <br/>{@link DevicePolicyManager#KEYGUARD_DISABLE_TRUST_AGENTS}, * <br/>{@link DevicePolicyManager#KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS}, * <br/>{@link DevicePolicyManager#KEYGUARD_DISABLE_SECURE_NOTIFICATIONS}, * <br/>{@link DevicePolicyManager#KEYGUARD_DISABLE_FINGERPRINT}, * <br/>{@link DevicePolicyManager#KEYGUARD_DISABLE_FEATURES_ALL} */ @TargetApi(Build.VERSION_CODES.LOLLIPOP) public void disableFeature(int which) { policyManager.setKeyguardDisabledFeatures(componentName, which); } }
相关文章推荐
- POJ 2236 Wireless Network
- 省市区存储数据
- 正则表达式
- 第五章项目1——(4)三角形类雏形
- Linux内核分析 05
- 《网络攻防技术与实践》第四周学习总结
- Android课程---String、StringBuffer 、StringBuilder 的区别(转)
- 五款适合创业者的工作效率App应用
- 7.Utm示例-SmartFoxServer集成
- 图形界面---显示图像
- JAVA线程同步——消费者和生产者模式
- springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序
- python操作Excel读写(使用xlrd和xlrt)
- tomcat WEB-INF中的结构
- 6.Utm示例-公共部分
- Thread详解2:停止与中断
- Listview adapter 总结
- Windows Linux 删除N天之前文件脚本
- 20135323符运锦----第五周:扒开系统调用的“三层皮”(下)
- GRUB的那些事