设备管理器有个特点,你注册了之后如果不解除注册就会难以卸载带有设备管理器的应用,目前4.3版本仍未提示用户如何卸载,maybe later.

在「设定-安全」你可以看见「设备管理器」,它提供一些高级功能,如下:

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

这个XML文件由你自己定义,这些权限写在这个文件里。你可以选择其中的权限。

下面这个例子是,在打开的时候判断有没有注册设备管理器,没有注册则提示注册,否则Toast「已经注册」。

1.MainActivity.java

 package com.example.wannauninstall;

 import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.widget.Toast; public class MainActivity extends Activity { DevicePolicyManager devicePolicyMNG ;
ComponentName componentName ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
devicePolicyMNG = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
componentName = new ComponentName(this,DeAdReceiver.class); if(devicePolicyMNG.isAdminActive(componentName))
{
Toast.makeText(MainActivity.this, "已经注册", Toast.LENGTH_LONG).show();
}
else ActiveMNG(); }
private void ActiveMNG()
{
Intent intent = new Intent (DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"--其他描述--");
startActivityForResult(intent , 0 ); } }

and you gonna need this:

2.DeAdReceiver.java

package com.example.wannauninstall;

import android.app.admin.DeviceAdminReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log; public class DeAdReceiver extends DeviceAdminReceiver{ @Override
public void onEnabled(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.e("TAG000","------onEnabled-------"); super.onEnabled(context, intent);
} @Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.e("TAG000","--------onReceive-----"); super.onReceive(context, intent);
} }

每次打开应用,你都会在LOGCAT里发现TAG000的onReceive的LOG,而如果注册了还可以看到onEnabled的LOG。

3.DeviceAdminReceiver是继承BroadcastReceiver的,所以也需要在Manifest中注册。类似这样:

        <receiver
android:name="com.example.wannauninstall.DeAdReceiver"
android:label="System 设备管理器"
android:permission="android.permission.BIND_DEVICE_ADMIN" >
<meta-data
android:name="android.app.device_admin"
android:resource="@layout/lock_screen" /> <intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>

注意上面的intent-filter里面的过滤条件,和前面第32行的implicit intent对应。

and you gonna see this:

It's a wit from:http://blog.csdn.net/feng88724/article/details/6323544,check it for more.

mar.20 Larry

Android设备管理器 DevicePolicyManager的更多相关文章

  1. Android设备管理器——DevicePolicyManager

    自从安卓2.2(API=8)以后,安卓手机是通过设备管理API对手机进行系统级的设备管理. 本篇通过大家熟悉的"一键锁屏"的小项目实现来介绍设备管理API如何通过强制设备管理策略创 ...

  2. Android设备管理器漏洞2--禁止用户取消激活设备管理器

    2013年6月,俄罗斯安全厂商卡巴斯基发现了史上最强手机木马-Obad.A.该木马利用了一个未知的Android设备管理器漏洞(ANDROID-9067882),已激活设备管理器权限的手机木马利用该漏 ...

  3. Android设备管理器漏洞(转)

    一.漏洞描述 目前被称为“史上最强Android木马”的病毒Backdoor.AndroidOS.Obad.a利用Android设备管理器漏洞使用户无法通过正常方式卸载.其实该漏洞早在去年底已被发现. ...

  4. (转)关于android设备管理器的一些分析

    转自http://bbs.pediy.com/showthread.php?t=183692 想必很多人都知道轰动一时android木马OBAD,该木马利用android设备管理器的漏洞,当用户激活设 ...

  5. 关于android的设备管理器-DevicePolicyManager(一)

    在Andorid的设置->安全里面有个设备管理器的选项,相信大部分android用户都不太会去注意这个东西.近期在安装了一个应用之后发现这个里面的东西变了.怎么回事呢,研究研究看看.</s ...

  6. 关于android的设备管理器-DevicePolicyManager(二)

    上回分析到了/data/system/device_policies.xml这个文件是在package change事件发生的时候变化的.那么来看看它的内容. 依据以往的经验.在/data/syste ...

  7. Android 设备管理器 阻止用户取消激活

    该方案测试可行,系统版本4.4.2.它算是借助android系统的一个bug,不确定在后续更高的版本中是否修复. 该功能和360防卸载功能一样的实现原理. 主要的参考资料是:http://bbs.pe ...

  8. Android Device Administration 设备管理器——实现一键锁屏

    Android Device Administration 设备管理器--实现一键锁屏 最近研究了一下安全这一块的内容,当然,我是比较水的,所以也拿不出什么好知识点,但是有一些冷门的东西我还是可以聊聊 ...

  9. Android学习笔记_61_手机安全卫士知识点归纳(1)状态/形状图形 GPS 设备管理器DeviceAdminReceiver ImageView属性

    1.在做程序自动安装更新的时候 ,必须保证程序的签名和包名是相同.  C:\Documents and Settings\zehua\.android  \ debug.keystore  debug ...

随机推荐

  1. Caused by: java.io.FileNotFoundException: rmi_keystore.jks (没有那个文件或目录)

    解决方法:修改jmeter.properites: server.rmi.ssl.disable=true,关闭ssl功能 参考: https://blog.csdn.net/nielinqi520/ ...

  2. Sublime Text 2搭建Go开发环境

    Sublime Text 2搭建Go开发环境,代码提示+补全+调试 cceevv · 2014-10-11 00:00:06 · 10496 次点击 · 预计阅读时间 3 分钟 · 5分钟之前 开始浏 ...

  3. nexus启动报错-----&gt;错误 1067: 进程意外终止。

    1.今天启动nexus报错: 2.错误信息 错误 1067: 进程意外终止. 3.检查发现我之前把jdk升级了. 然而nexus之前指定的jdk将不再生效. 4.解决的方法 找到nexus安装文件夹 ...

  4. LoadRunner多负载产生器

    Executive Summary : The following explains why it is necessary to have about 6 load generators when ...

  5. 在kubernetes 集群运行 odoo

        kubernetes 可以自动运行多个 odoo服务的副本,因此 非常适用用来做高可用的odoo部署, 在本例中,odoo服务运行在 kubernetes 集群中, 而 postgreSQL ...

  6. python(20)- 列表生成式和生成器表达式练习Ⅱ

    题目一: 有两个列表,分别存放来老男孩报名学习linux和python课程的学生名字linux=['钢弹','小壁虎','小虎比','alex','wupeiqi','yuanhao']python= ...

  7. 华为P7电信4G版刷机包 EMUI2.3 官方B125 第3版 精简 ROOT

    ROM介绍 基于底包至 B125 SP03解包制作 增加自己订制的超美丽EMUI 2.3专用的全局主题 自调刷机脚本,全部权限完美百分百与官方原版相贴合. 加入Root权限并使用SuperSU 2.0 ...

  8. oracle insert/update

    insert into table (,,) values (,,) where update table set (,)=(select , from ) where

  9. MapReduce框架在Yarn上的具体解释

    MapReduce任务解析 在YARN上一个MapReduce任务叫做一个Job. 一个Job的主程序在MapReduce框架上实现的应用名称叫MRAppMaster. MapReduce任务的Tim ...

  10. Struts2实例详解(转载)

    Struts2(上) 一.        经典的MVC模式 二.        Struts1.x对MVC的实现 三.        Struts1.x的主要组件和作用 组件 作用 ActionSer ...