admin管理员组文章数量:1583574
Android项目:手机安全卫士(8)—— 管理员权限
1 介绍
关于手机防盗的功能,前面我们已经完成了一半,今天将要完成另一半,我们先来看看整体的功能描述:
现在,我们还差两个功能:
- 远程删除数据
- 远程锁屏
需要说明一下,完成今天的任务,你就可以开发一款 App:一键锁屏,是不是很厉害,哈哈。
- Android 项目:手机安全卫士(3)—— 主界面布局
- Android 项目:手机安全卫士(4)—— 自定义(组合)控件、属性
- Android 项目:手机安全卫士(5)—— 自定义弹窗
- Android 项目:手机安全卫士(6)—— 手机防盗设置向导
- Android 项目:手机安全卫士(6)—— 手机防盗设置向导(二)
- Android 项目:手机安全卫士(7)—— 手机防盗功能
项目源码地址(实时更新):https://github/xwdoor/MobileSafe
2 管理员权限
不管是远程删除数据,还是远程锁屏,都需要系统的管理员权限,既然如此,那让我们先来看看怎么获取管理员权限。
首先,创建一个 Receiver:AdminReceiver,继承自 DeviceAdminReceiver,看清楚哦,不是继承自 BroadcastReceiver:
/**
* Created by XWdoor on 2016/3/9 009 10:03.
* 博客:http://blog.csdn/xwdoor
*/
public class AdminReceiver extends DeviceAdminReceiver {
}
这个 Receiver 什么都不做,只是一个傀儡,重点在于它在清单文件 AndroidManifest.xml 中进行注册时的配置,如下所示:
<receiver
android:name=".receiver.AdminReceiver"
android:description="@string/device_admin_description"
android:label="@string/device_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>
需要注意几点,需要配置一个权限属性:android:permission="android.permission.BIND_DEVICE_ADMIN"
,除此之外,我们还需要设置它的配置数据,标明我们将需要那些操作,在这里,我们创建一个 xml 配置文件:device_admin.xml,内容如下:
<device-admin xmlns:android="http://schemas.android/apk/res/android">
<uses-policies>
<!-- 远程锁屏权限 -->
<force-lock />
<!-- 远程删除数据 -->
<wipe-data />
</uses-policies>
</device-admin>
除了这两个权限之外,其实还有其他很多的权限,如设置锁频密码、禁用摄像头、加密存储卡 等策略,这里我们只用到两个。好了,这些准备工作做完,我们就可以获取并激活管理员权限了。
3 激活管理员权限
配置好参数之后,就需要在代码中提示用户激活权限了,首先在 BaseActivity 中初始化设备管理器:
// 设备策略管理器
mDPM = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);
// 初始化管理员组件
mDeviceComponentName = new ComponentName(this, AdminReceiver.class);
然后添加激活管理员权限的方法,如下:
/**
* 激活超级管理员权限 设置->安全->设备管理器
*/
public void activeAdmin() {
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceComponentName);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
"手机安全卫士-手机防盗,您的好帮手,值得拥有");
startActivity(intent);
showToast("请先激活手机防盗的管理员权限");
}
然后在手机防盗界面 AntiTheftActivity,添加判断,并提示用户激活:
//如果没有激活权限,提示激活
if(!mDPM.isAdminActive(mDeviceComponentName)){
activeAdmin();
}
4 远程锁屏
有了上面的准备,锁屏就简单了,直接调用锁屏的 api 即可:
else if ("#*lockscreen*#".equals(msg)) {
//远程锁屏
lockNow(context);
abortBroadcast();
}
/**
* 立即锁屏
*/
public void lockNow(Context context) {
// 设备策略管理器
DevicePolicyManager mDPM = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
// 初始化管理员组件
ComponentName mDeviceComponentName = new ComponentName(context, AdminReceiver.class);
if (mDPM.isAdminActive(mDeviceComponentName)) {
mDPM.lockNow();// 立即锁屏
//mDPM.resetPassword("123456", 0);// 重新设置密码, 传""取消密码
}
}
5 删除数据
同样,也是调用 api 即可
else if ("#*wipedata*#".equals(msg)) {
//删除数据
wipeData(context);
abortBroadcast();
}
/**
* 清除数据
*/
public void wipeData(Context context) {
// 设备策略管理器
DevicePolicyManager mDPM = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
// 初始化管理员组件
ComponentName mDeviceComponentName = new ComponentName(context, AdminReceiver.class);
if (mDPM.isAdminActive(mDeviceComponentName)) {
mDPM.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE);// 清除内部数据和sdcard
}
}
6 总结
今天的内容是干货有木有,可以做一键锁屏了,可以设置锁频密码、禁用摄像头、加密存储卡了,很兴奋吧。
最近的学习强度增加了,是因为需要抽出时间做其他事,所以节奏加快了。
- Android 项目:手机安全卫士(3)—— 主界面布局
- Android 项目:手机安全卫士(4)—— 自定义(组合)控件、属性
- Android 项目:手机安全卫士(5)—— 自定义弹窗
- Android 项目:手机安全卫士(6)—— 手机防盗设置向导
- Android 项目:手机安全卫士(6)—— 手机防盗设置向导(二)
- Android 项目:手机安全卫士(7)—— 手机防盗功能
项目源码地址(实时更新):https://github/xwdoor/MobileSafe
版权声明:本文标题:Android项目:手机安全卫士(8)—— 管理员权限 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1726301335a1065116.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论