有些时候,我们希望我们的应用可以使用一些系统功能,如锁屏,数据擦除,这个需要应用注册成为设备管理器才可以做到,下面我们来看看如何使用设备管理器.
设备管理器是一种管理工具,可用它来管理计算机上的设备。可以使用“设备管理器”查看和更改设备属性、更新设备驱动程序、配置设备设置和卸载设备。设备管理器提供计算机上所安装硬件的图形视图。所有设备都通过一个称为“设备驱动程序”的软件与 Windows 通信.这是摘录自百度百科的关于电脑的设备管理器的介绍,当然安卓系统也是一样的,安卓设备管理器则是提供了很多系统功能,关于安卓设备管理器介绍如下:
Android 2.2 SDK提供了一个可管理和操作设备的API叫DevicePolicyManager(这是设备管理的主类),使用这个API你可以接管手机的应用权限,对手机做出很重要很多大胆的操作(温馨提示:数据无价,谨慎操作),比如设置锁屏方式、恢复出厂设置、设置密码、强制清除密码,修改密码等操作。
如果需要让我们的应用注册为设备管理器,我们需要让应用跳转到设备管理器注册Activity,并且用户同意该应用注册为设备管理器,才能让应用注册为设备管理器.
//激活设备管理器,也可以在设置-》安全-》设备管理器中手动激活
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中进行.
如果要让我们的应用成为设备管理器,只是配置跳转授权还是不行的,我们需要做一些配置,让我们的应用能够成为设备管理器.
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
这个receiver需要配置在application中,关于description和label的描述如下
有了超级设备管理器,可以一键锁屏,清除数据等等
超级设备管理器
这些描述在res/values/strings.xml中记录
接着,我们在res文件中创建xml文件夹,并且创建device_admin_sample.xml文件,内容如下:
这里配置就是这个设备管理器所具有的权限
这样就配置好了,下面说说如何使用这个设备管理器
@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,并且重置锁屏密码,如果没有激活,就先激活.