码迷,mamicode.com
首页 > 移动开发 > 详细

Android中的关于MDM中的几个方法举例

时间:2015-08-14 18:29:28      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:

Android中的关于MDM中的几个方法举例

首先介绍一下MDM是什么的缩写,MDM是什么?

MDM 是 (Mobile Device Management )的缩写,中文翻译过来就是移动设备管理。随着移动设备计算能力地增强,移动设备携带越来越方便,移动化办公已经成为一种潮流,一种趋势,企业对移动设备管理的需求越来越急切。MDM是企业IT 向移动互联网过渡的平台技术,帮助企业将IT管理能力从传统的 PC 延伸到移动设备甚至 移动应用APP 。 随着时间的发展, MDM 厂商逐渐扩展出 MAM (Mobile Application Management)移动设备的应用程序管理,MEM(Mobile Email Management)移动设备的邮件管理和 MCM (Mobile Content Management)移动设备的内容管理等更多功能,但是MDM是这些管理的基础。

 

移动设备的管理首先定义可以对移动设备进行哪些操作,操作列表定义在xml文档,文档的路径是project_name/res/xml/文件夹下面,如下面的mdms.xml:

<?xml version="1.0" encoding="UTF-8"?>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android" >

    <uses-policies>

        <!-- 强行锁定 -->
        <force-lock />
        <!-- 清除所有数据(恢复出厂设置) -->
        <wipe-data />
        <!-- 重置密码 -->
        <reset-password />
        <!-- 限制密码选择 -->
        <limit-password />
        <!-- 监控登录尝试 -->
        <watch-login />


        <disable-camera />
    </uses-policies>

</device-admin>

 

然后提供一个继承DeviceAdminReceiver的子类,并在Manifest中配置如下:xml/mdms就是上文中的mdms的xml文件。

  <receiver
            android:name=".SUDeviceAdminReceiver"
            android:label="@string/app_name"
            android:permission="android.permission.BIND_DEVICE_ADMIN" >
            <meta-data
                android:name="android.app.device_admin"
                android:resource="@xml/mdms" />

            <intent-filter>
                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
            </intent-filter>
        </receiver>

SUDeviceAdminReceiver的代码如下:

public class SUDeviceAdminReceiver extends DeviceAdminReceiver {
    @Override  
    public DevicePolicyManager getManager(Context context) {  
     //   Logger.d("------" + "getManager" + "------");
    
        return super.getManager(context);  
    }  
    @Override  
    public ComponentName getWho(Context context) {  
      //  Logger.d("------" + "getWho" + "------");  
        return super.getWho(context);  
    }  
      
    /** 
     * 禁用 
     */  
    @Override  
    public void onDisabled(Context context, Intent intent) {  
       // Logger.d("------" + "onDisabled" + "------");  
          
        Toast.makeText(context, "禁用设备管理", Toast.LENGTH_SHORT).show();  
          
        super.onDisabled(context, intent);  
    }  
    @Override  
    public CharSequence onDisableRequested(Context context, Intent intent) {  
       // Logger.d("------" + "onDisableRequested" + "------");  
        return super.onDisableRequested(context, intent);  
    }  
      
    /** 
     * 激活 
     */  
    @Override  
    public void onEnabled(Context context, Intent intent) {  
       // Logger.d("------" + "onEnabled" + "------");  
          
        Toast.makeText(context, "启动设备管理", Toast.LENGTH_SHORT).show();  
          
        super.onEnabled(context, intent);  
    }  
    @Override  
    public void onPasswordChanged(Context context, Intent intent) {  
       // Logger.d("------" + "onPasswordChanged" + "------");  
        super.onPasswordChanged(context, intent);  
    }  
    @Override  
    public void onPasswordFailed(Context context, Intent intent) {  
       // Logger.d("------" + "onPasswordFailed" + "------");  
        super.onPasswordFailed(context, intent);  
    }  
    @Override  
    public void onPasswordSucceeded(Context context, Intent intent) {  
       // Logger.d("------" + "onPasswordSucceeded" + "------");  
        super.onPasswordSucceeded(context, intent);  
    }  
    @Override  
    public void onReceive(Context context, Intent intent) {  
       // Logger.d("------" + "onReceive" + "------");  
          
        super.onReceive(context, intent);  
    }  
    @Override  
    public IBinder peekService(Context myContext, Intent service) {  
       // Logger.d("------" + "peekService" + "------");  
        return super.peekService(myContext, service);  
    }  

}

 

在进行移动设备(Android移动设备)管理之前,首先要激活设备管理器,管理器激活的代码如下:

 

/**
     * 激活设备管理权限 成功执行激活时,DeviceAdminReceiver中的 onEnabled 会响应
     */
    private void activeManage() {
        // 启动设备管理(隐式Intent) - 在AndroidManifest.xml中设定相应过滤器
        Intent intents = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);

        // 权限列表
        intents.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);

        // 描述(additional explanation)
        intents.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                "------ 其他描述 ------");

        startActivityForResult(intents, 0);
    }
    

 

点击下图中的激活按钮就可以对设备进行管理了。

技术分享

 

 

关闭屏幕的方法:

public void closeScreen() {
                boolean active = policyManager.isAdminActive(componentName);
        if (active) {
            policyManager.lockNow();
            lockScreen(getWindow());

        }
    }

public void lockScreen(Window wind) {
        wind.clearFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
        wind.clearFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
        wind.clearFlags(LayoutParams.FLAG_TURN_SCREEN_ON);
    }

 

屏幕由黑变亮,跳过滑动解锁,回到Launcher的方法:

public void unlockScreen() {
        wakeLock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP
                | PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "My Tag");
        wakeLock.acquire();

        // 得到键盘锁管理器对象
        keyguradLock = km.newKeyguardLock("unLock");
        // 参数是LogCat里用的Tag
        keyguradLock.disableKeyguard();
    }

允许摄像机使用的方法:

public void enableCamera() {
        policyManager.setCameraDisabled(componentName, true);
    }

禁止摄像机使用的方法:

public void disableCamera() {
        policyManager.setCameraDisabled(componentName, false);
    }

设置移动设备密码的方法:

public void encrptionDevice(String password) {

        //首先关闭屏幕,加密码的操作才会立即生效

        closeScreen();
        policyManager.resetPassword(password, 0);

    }

去除移动设备密码的方法:

public void decrptionDevice() {
        lockScreen(this.getWindow());

        //把原来设备的密码设置为空,也就相当于去除了设备的密码
        policyManager.resetPassword("", 0);
        unlockScreen();
    }

 

上面方法中用到的变量定义和赋值如下:

    private ComponentName componentName = null;
    public static DevicePolicyManager policyManager = null;
    private PowerManager pm;
    KeyguardManager km;
    KeyguardLock keyguradLock;

    private PowerManager.WakeLock wakeLock;

 

 

       // AdminReceiver 继承自 DeviceAdminReceiver
        componentName = new ComponentName(this, SUDeviceAdminReceiver.class);
        // 获取设备管理服务
        policyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
        km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
        // 获取电源的服务
        pm = (PowerManager) getSystemService(Context.POWER_SERVICE);

 

 

还需要使用一些权限如下:

    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />

 

 

MDM的管理大概就讲到这里了,希望对大家能有所帮助。        

 



Android中的关于MDM中的几个方法举例

标签:

原文地址:http://www.cnblogs.com/gtgl/p/4730751.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!