博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Android学习笔记七] 设备管理服务示例开发
阅读量:6371 次
发布时间:2019-06-23

本文共 4985 字,大约阅读时间需要 16 分钟。

   关于Android Device Administratioin介绍可参见 docs/guide/topics/admin/device-admin.html 小节。

   本文通过示例演示Android Device Policy管理的实现。

   1.示例基本操作图

   

     

     上图是本示例的主界面,通过应用程序来实现设备管理,本示例实现密码设置管理。

     

     1.1 通过点击“启动设备管理器”按钮来激活设备管理

   

           

      应用程序用通知设备管理启用,用户点击激活,应用程序具备设备管理能力。

    1.2  通过点击“设置密码规则”按钮来设置锁屏密码的限制规则,要使用该策略需要在设备管理的使用策略列表中添加limit-password.

   

     

     

     示例中调用了设置新密码的ACTION(DevicePolicyManager.ACTION_SET_NEW_PASSWORD),通过设置后,看以看到屏幕锁屏需要密码。  

  

    1.3 通过点击“修改密码”按钮则可以将文本框中的内容作为锁屏密码,该步骤可以通过程序完成。

   

    

    调用DevicePolicyManager的重置密码方法(resetPassword),即可在应用程序中对锁屏密码进行重置。

  2. 具体实现

  

     实现上述整个示例需要:

     a.界面布局;实际应用中根据具体情况而定

     b.DevicePolicyManager类的具体使用

     c.DeviceAdminReceiver类的子类话,来实现具体广播事件的处理

     d.AndroidManifest.xml文件中广播接收类的配置

     c.应用程序中需要的设备管理策略列表

   

     注:本示例代码使用了框架。

   2.1 示例程序界面(layout/activity_device_admin.xml)

     

    
        
        
        
    

   

    2.2 Activity类和自定义的DeviceAdminReceiver类

package secondriver.sdk.activity;import android.app.Activity;import android.app.admin.DeviceAdminReceiver;import android.app.admin.DevicePolicyManager;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import butterknife.Bind;import butterknife.ButterKnife;import butterknife.OnClick;import secondriver.sdk.R;/** * Author : secondriver * Created : 2015/11/27 */public class DeviceAdminActivity extends Activity {    @Bind(R.id.pwd_editText)    public EditText pwdEditText;    private DevicePolicyManager mDevicePolicyManager;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_device_admin);        ButterKnife.bind(this);        mDevicePolicyManager = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);    }    //单击启用设备管理按钮    @OnClick(R.id.device_admin_button)    public void onClickDeviceButton(Button button) {        Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);        intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, new ComponentName(this, MyDeviceAdminReceiver.class));        intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "启动设备管理器");        startActivityForResult(intent, 1);    }    //单击设置密码规则按钮    @OnClick(R.id.pwd_rule_set_button)    public void onClickPwdRuleSetButton(Button button) {        Intent intent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD);        startActivityForResult(intent, 2);    }    //单击修改密码按钮    @OnClick(R.id.modify_pwd_button)    public void onClickModifyPwdButton(Button button) {        String pwd = pwdEditText.getText().toString();        ComponentName receiver = new ComponentName(this, MyDeviceAdminReceiver.class);        boolean active = mDevicePolicyManager.isAdminActive(receiver);        if (active) {            boolean rs = mDevicePolicyManager.resetPassword(pwd, DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY);            if (rs) {                Toast.makeText(this, "密码修改成功", Toast.LENGTH_SHORT).show();            } else {                Toast.makeText(this, "密码修改失败", Toast.LENGTH_SHORT).show();            }        } else {            Toast.makeText(this, "没有Active Admin", Toast.LENGTH_SHORT).show();        }    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        switch (requestCode) {            case 1:                if (resultCode == RESULT_OK) {                    Toast.makeText(this, "设备管理器开启成功", Toast.LENGTH_SHORT).show();                } else {                    Toast.makeText(this, "设备管理器开启失败", Toast.LENGTH_SHORT).show();                }                break;            case 2:                if (resultCode == RESULT_OK) {                    Toast.makeText(this, "密码规则设置成功", Toast.LENGTH_SHORT).show();                } else {                    Toast.makeText(this, "密码规则设置失败", Toast.LENGTH_SHORT).show();                }                break;            default:                break;        }    }    //自定义的设备管理广播接收类,可以重写DeviceAdminReceiver中的方法,来实现具体功能    public static class MyDeviceAdminReceiver extends DeviceAdminReceiver {        /**         * 重写其中方法         * 

         * More         */        @Override        public void onDisabled(Context context, Intent intent) {            super.onDisabled(context, intent);            //设备管理禁用        }        @Override        public void onEnabled(Context context, Intent intent) {            super.onEnabled(context, intent);            //设备管理启用        }    }}

   2.3 配置设备管理接收者

        
            
            
                
            
        

    xml/device_admin内容:

    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    

    示例生成apk,该应用具体了设备管理的功能。

转载地址:http://juuqa.baihongyu.com/

你可能感兴趣的文章
DVNA:Node.js打造的开源攻防平台
查看>>
17个案例带你3分钟搞定Linux正则表达式
查看>>
Java 8 比较器:如何对 List 排序
查看>>
苹果是否步思科后尘折戟中国
查看>>
漏洞预警!微软曝光震网三代漏洞,隔离网面临重大危机
查看>>
协鑫集成第二批1000台E-KwBe光伏储能设备即将启运澳洲
查看>>
爱立信物联网广州路演
查看>>
云计算企业业绩分化明显 9家上市公司中期预喜
查看>>
《VMware Virtual SAN权威指南(原书第2版)》一3.5 可能发生的网络配置问题
查看>>
SK电讯发布Q2财报 净利润同比下降26.9%
查看>>
零售品牌如何驾驭大数据主导商业决策?
查看>>
经济模式UPS在数据中心的应用(上)
查看>>
Intel首款32核Xeon E5 v5跑分曝光:史上最强
查看>>
中国基于国产龙芯处理器的大数据一体机
查看>>
物联网影响商业发展三要素
查看>>
China Unicom and Chunghwa Telecom work together&nb
查看>>
Java图片上查找图片算法
查看>>
Python fabric实现远程操作和部署
查看>>
详解Java中staitc关键字
查看>>
前中情局局长:FBI目的是从根本上改善iPhone
查看>>