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:




   

       
       
       
       
       
       
       
       
       
       


       
   



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

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

           
               
           

       

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);
    }
   


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

Android中的关于MDM中的几个方法举例_第1张图片



关闭屏幕的方法:

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



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

   
   



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






你可能感兴趣的:(Android,MDM)