admin管理员组文章数量:1651173
一.安卓调用设备管理器
有些时候,我们希望我们的应用可以使用一些系统功能,如锁屏,数据擦除,这个需要应用注册成为设备管理器才可以做到,下面我们来看看如何使用设备管理器.
1.1 什么是设备管理器
设备管理器是一种管理工具,可用它来管理计算机上的设备。可以使用“设备管理器”查看和更改设备属性、更新设备驱动程序、配置设备设置和卸载设备。设备管理器提供计算机上所安装硬件的图形视图。所有设备都通过一个称为“设备驱动程序”的软件与 Windows 通信.这是摘录自百度百科的关于电脑的设备管理器的介绍,当然安卓系统也是一样的,安卓设备管理器则是提供了很多系统功能,关于安卓设备管理器介绍如下:
Android 2.2 SDK提供了一个可管理和操作设备的API叫DevicePolicyManager(这是设备管理的主类),使用这个API你可以接管手机的应用权限,对手机做出很重要很多大胆的操作(温馨提示:数据无价,谨慎操作),比如设置锁屏方式、恢复出厂设置、设置密码、强制清除密码,修改密码等操作。
1.2 如何让应用注册为设备管理器
如果需要让我们的应用注册为设备管理器,我们需要让应用跳转到设备管理器注册Activity,并且用户同意该应用注册为设备管理器,才能让应用注册为设备管理器.
1.2.1 跳转到注册设备管理器
//激活设备管理器,也可以在设置-》安全-》设备管理器中手动激活
public void activeAdmin(){
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,mDeviceAdminSample);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"请激活设备管理器");
intent.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
这里DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN表示添加一个设备管理器,Intent.FLAG_ACTIVITY_NEW_TASK这个是在service中跳转activity时需要的一个标志,但是貌似这个跳转在service里面执行是有问题的,可以放到Activity中进行.
1.2.2配置应用以成为设备管理器
如果要让我们的应用成为设备管理器,只是配置跳转授权还是不行的,我们需要做一些配置,让我们的应用能够成为设备管理器.
1.2.2.1 创建DeviceAdminReceiver
import android.app.admin.DeviceAdminReceiver;
/**
* @Author:MingKong
* @Description:
* @Date:Created in 16:16 2018/11/6
* @Modified By:
*/
public class AdminReceiver extends DeviceAdminReceiver {
}
这里我们创建了AdminReceiver继承了DeviceAdminReceiver ,下面我们需要在清单文件中配置这个receiver
1.2.2.2 在AndroidManifest.xml配置receiver
<receiver
android:name=".activity.receiver.AdminReceiver"
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>
这个receiver需要配置在application中,关于description和label的描述如下
<resources>
<string name="sample_device_admin_description">有了超级设备管理器,可以一键锁屏,清除数据等等</string>
<string name="sample_device_admin">超级设备管理器</string>
</resources>
这些描述在res/values/strings.xml中记录
1.2.2.3 配置device_admin_sample.xml文件
接着,我们在res文件中创建xml文件夹,并且创建device_admin_sample.xml文件,内容如下:
<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>
这里配置就是这个设备管理器所具有的权限
1.3 使用设备管理器
这样就配置好了,下面说说如何使用这个设备管理器
@Override
public void onCreate() {
super.onCreate();
mDPMx = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
mDeviceAdminSample = new ComponentName(this, AdminReceiver.class);
SharedPreferences mConfig = getSharedPreferences("config", MODE_PRIVATE);
String type = mConfig.getString("type",null);
if("wipedata".equals(type)){
clearData();
}else if("lockscreen".equals(type)){
lockScreen();
}
stopSelf();
}
我们在Activity中的onCreate()方法中获取当前这个设备管理器实例,然后如同之前的跳转Activity的代码来注册这个设备管理器,来获取权限,下面演示下如何使用这个设备管理器
//一键锁屏
public void lockScreen(){
if(mDPMx.isAdminActive(mDeviceAdminSample)){//判断设备管理器是否已经激活
mDPMx.lockNow();
mDPMx.resetPassword("123456",0);
}else{
activeAdmin();
ToastUtil.showToast(this,"必须先激活设备管理器");
}
}
首先判断这个设备管理器是否激活,如果激活就调用锁屏api,并且重置锁屏密码,如果没有激活,就先激活.
本文标签: 设备管理器
版权声明:本文标题:安卓调用设备管理器 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1726300936a1065075.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论