安卓调用设备管理器

一.安卓调用设备管理器

有些时候,我们希望我们的应用可以使用一些系统功能,如锁屏,数据擦除,这个需要应用注册成为设备管理器才可以做到,下面我们来看看如何使用设备管理器.

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.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>

这里配置就是这个设备管理器所具有的权限

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,并且重置锁屏密码,如果没有激活,就先激活.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值