添加当前程序到设备管理列表里

原创 2016年06月01日 17:50:44

1、权限配置

详细请参考Device Administration以及DeviceAdminReceiver的相关文档
根据sdk文档,说明,先创建Androidmanifest.xml,它必须包含如下信息

  1. 子类(继承自DeviceAdminReceiver)需要包含以下两点:

    • 必须拥有BIND_DEVICE_ADMIN
    • 能处理ACTION_DEVICE_ADMIN_ENABLED的intent请求,并在xml中声明为一个intent
  2. 在metadata中进行安全声明

    下面是一个manifest例子

        <receiver
            android:name=".myDeviceAdminReceiver"
            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>
a) meta-data项是必须的,还有权限以及intent-filter
b) android:resource对应的xml需要自己创建,并放在xml目录下,xml目录没有自己创建,其内容如下:
<?xml version="1.0" encoding="utf-8"?>
<device-admin
  xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-policies>
        <force-lock />
    </uses-policies>
</device-admin>

2、代码部分,创建继承子类MyDeviceAdminReceiver

public class myDeviceAdminReceiver extends DeviceAdminReceiver{

    private static String TAG = "TestHello"; 
    @Override
    public void onEnabled(Context context, Intent intent) {
        // TODO Auto-generated method stub
        super.onEnabled(context, intent);
        Toast.makeText(context, context.getResources().getString(R.string.device_admin_jihuo_success_tips), Toast.LENGTH_LONG).show();;
        Log.i(TAG, "DeviceAdminReceiver::onEnabled");
    }

    @Override
    public CharSequence onDisableRequested(Context context, Intent intent) {
        // TODO Auto-generated method stub
        //这里如果返回的字符串不为空,那么当用户去设置里取消时,则会提示带此文字的确定框
        String strResult = "请不要取消,谢谢!!!";
        Log.i(TAG, "DeviceAdminReceiver::onDisableRequested");
        //return super.onDisableRequested(context, intent);
        return strResult;
    }

    @Override
    public void onDisabled(Context context, Intent intent) {
        // TODO Auto-generated method stub
        super.onDisabled(context, intent);
        Log.i(TAG, "DeviceAdminReceiver::onDisable");
        Toast.makeText(context, context.getResources().getString(R.string.device_admin_cancel_jihuo_tips), Toast.LENGTH_LONG).show();;
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        super.onReceive(context, intent);
        Log.i(TAG, "DeviceAdminReceiver::onReceive");
    }

}

3、编写添加进入设备的代码

    public void OpenDevicePolicyManager(Context context)
    {
        DevicePolicyManager dManager = (DevicePolicyManager) context.getSystemService("device_policy");//获取manager对象
        ComponentName localComponentName = new ComponentName(this, myDeviceAdminReceiver.class);
        if (dManager != null && 
            localComponentName != null && 
            false == dManager.isAdminActive(localComponentName)) {
            Intent localIntent = new Intent(dManager.ACTION_ADD_DEVICE_ADMIN);
            localIntent.putExtra(dManager.EXTRA_DEVICE_ADMIN, localComponentName);
            localIntent.putExtra(dManager.EXTRA_ADD_EXPLANATION, 
                                 context.getResources().getString(R.string.device_admin_explanation));
            startActivityForResult(localIntent, ActivityResult);
        }
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        //用于判断是否startActivity成功,需要xml中的配置权限才能设置成功
        super.onActivityResult(requestCode, resultCode, data);
        Log.i(TAG, "onActivityResult,resultCode:"+resultCode);
        if (-1 == resultCode) {
            Toast.makeText(this, this.getResources().getString(R.string.device_admin_jihuo_success_tips), Toast.LENGTH_LONG).show();;
        }
        else {
            Toast.makeText(this, this.getResources().getString(R.string.device_admin_jihuo_failed_tips), Toast.LENGTH_LONG).show();;
        }
    }
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

关于DevicePolicyManager申请系统管理权限

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

电机设备管理小程序

  • 2012-09-09 01:19
  • 811KB
  • 下载

操作系统--设备管理

设备管理概述: 设备管理的主要功能: 设备分配 设备映射 设备驱动 I/O缓冲区的管理 设备分配 多道程序系统中,设备不允许用户直接使用,而是由操作系统统一调度和控制。设备分配功...

设备管理程序

  • 2013-05-28 16:41
  • 40.49MB
  • 下载

移动存储设备管理程序

  • 2009-03-14 14:17
  • 46KB
  • 下载

WEB 端批量移动设备管理控制工具 STF 的环境搭建和运行(MAC OS)

WEB 端批量移动设备管理控制工具 STF 的环境搭建和运行(MAC OS) ubuntu平台部署【更新完成】 STF平台官网:http://openstf.io/   相关工...

Linux设备管理(四)_从sysfs回到ktype

http://www.cnblogs.com/xiaojiang1025/p/6202298.html sysfs是一个基于ramfs的文件系统,在2.6内核开始引入,用来导出内...

6.学习操作系统之设备管理

1.设备管理概述1.1设备管理的任务和功能设备管理的主要任务是完成用户提出的I/O请求,为用户分配I/O设备,提高I/O设备的利用率,方便用户使用I/O设备。设备管理应该具备以下功能: 设备分配。按照...

铸造厂ERP--设备管理信息子系统

本文系统分析了铸造厂ERP系统的各个功能模块,并利用Delphi6.0和数据库SQL Sever7.0在Windows2000 Server平台上开发出了基于C/S模式的铸造厂ERP系统的设备管理部分...
  • xuhx
  • xuhx
  • 2011-01-01 01:26
  • 3400
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)