Android之 设备的超级管理员与一键锁屏之原理

来源:互联网 发布:网络视频监控 编辑:程序博客网 时间:2024/06/06 09:39
   Android之 设备的超级管理员的介绍

Android 2.2引入了支持企业应用程序提供Android设备管理API。设备管理API提供了设备管理功能在系统水平。这些api允许您创建安全性敏感的应用程序是有用的在企业环境中,IT专业人员需要丰富的控制员工的设备。例如,内置Android电子邮件应用程序利用了新的api来改善交流的支持。通过电子邮件应用程序,交流管理员可以执行密码策略——包括字母数字密码或数字针——在设备。管理员也可以远程擦除(即恢复工厂默认值)丢失或被盗的手机。用户可以同步他们的电子邮件和日历数据交换。

现在举一个常见的例子来介绍一下DeviceAdminReceiver的用法:市面上的一键锁屏就用到了这个类:那我们就来看看一键锁屏是如何实现的。

第一步:先创建admin类继承DeviceAdminReceiver,里面的具体内容先不用实现

第二步:在清单文中重配置(参考官方文档)

     <receiver                android:name="com.cca.yijian.Admin"                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>

在这里我们引用了一个布局文件device_admin_sample.xml,所以
还要新建一个 res目录下xml文件夹并新建device_admin_sample.xml:
声明中使用的安全策略的元数据提供了特定于设备管理员的附加信息,可通过DeviceAdminInfo类进行解析查看,以下为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、在主布局中添加一个按钮;点击按钮进行一键锁屏:

      public void lockscreen(View view){        DevicePolicyManager dpm=        (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);            ComponentName who=new ComponentName(this, Admin.class);            if(dpm.isAdminActive(who)){                //重置密码                //dpm.resetPassword("123", 0);                //清除sd卡数据                //dpm.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE);                //锁频                dpm.lockNow();                finish();            }else{                Toast.makeText(this, "请先激活应用程序", 0).show();            }        }

为了给用户一个友好的提示,在布局中再来一个按钮“激活应用程序”

    public void JiHuoManager(View view){            Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);             ComponentName who=new ComponentName(this, Admin.class);            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, who);             intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"请大家赶紧去激活程序吧,首次激活  有大礼包!");             startActivity(intent);    }

到这里用户可以进行激活应用程序了,激活之后可以使用一键锁屏了,不过用户以后要是不想用这个软件了,却发现卸载不了这个软件,水平又不高。所以为了良好的用户体验,在布局下方再来一个按钮:卸载应用 ,点击按钮卸载应用程序

    public void deleteLockScreen(View view){            DevicePolicyManager dpm=(DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);             ComponentName who=new ComponentName(this, Admin.class);            dpm.removeActiveAdmin(who);            Intent intent=new Intent();            intent.setAction(Intent.ACTION_DELETE);            intent.setData(Uri.parse("package:"+getPackageName()));            startActivity(intent);        }

这时,应用就完善了。

0 0
原创粉丝点击