zoukankan      html  css  js  c++  java
  • 设备管理器

        1,查看google文档Administration---->device polices---->清单文件的配置mainfest.xml
        2,将mainfest.xml广播接受者子类创建出来DeviceAdmin继承至DeviceAdminReceiver
        3,将清单文件中的错误进行修复(字符串创建,xml文件创建)
        4,xml文件夹
            <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>
        5,开启激活界面的activity
            ComponentName mDeviceAdminSample = new ComponentName(context, DeviceAdmin.class);
    
            Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample);
            intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                mActivity.getString(R.string.add_admin_extra_app_text));
            startActivity(intent);
    
        前提:必须激活当前应用
        6,一键锁屏
            //获取设备的管理者对象
            DevicePolicyManager mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
            //锁屏
            mDPM.lockNow();
        7,一键清除数据
            mDPM.wipeData();
        8,一键卸载
            在设备管理器中没有激活,可以卸载
            在设备管理器中有做激活,不可以卸载,系统会提示取消在设备管理器中激活,然后才可以卸载
    
            卸载?android系统自带功能,看源码,卸载界面
    
            查看packageInstaller源码,找到uninstallActivity源码,
            匹配对应的action,category,data(应用的包名)去卸载指定应用
    public class MainActivity extends Activity {
    
        private ComponentName mDeviceAdminSample;
        private DevicePolicyManager mDPM;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            Button bt_start = (Button) findViewById(R.id.bt_start);
            Button bt_lock = (Button) findViewById(R.id.bt_lock);
            Button bt_wipedata = (Button) findViewById(R.id.bt_wipedata);
            Button bt_uninstall = (Button) findViewById(R.id.bt_uninstall);
            
            //(上下文环境,广播接受者对应的字节码文件)
            
            //组件对象可以作为是否激活的判断标志
            mDeviceAdminSample = new ComponentName(this, DeviceAdmin.class);
            mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
                    
            bt_start.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    //开启设备管理器的activity
                    Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
                    intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample);
                    intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"设备管理器");
                    startActivity(intent);
                }
            });
            
            bt_lock.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    //是否开启的判断
                    if(mDPM.isAdminActive(mDeviceAdminSample)){
                        //激活--->锁屏
                        mDPM.lockNow();
                        //锁屏同时去设置密码
                        mDPM.resetPassword("123", 0);
                    }else{
                        Toast.makeText(getApplicationContext(), "请先激活", 0).show();
                    }
                }
            });
            
            bt_wipedata.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(mDPM.isAdminActive(mDeviceAdminSample)){
                        mDPM.wipeData(0);//手机数据
    //                    mDPM.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE);//手机sd卡数据
                    }else{
                        Toast.makeText(getApplicationContext(), "请先激活", 0).show();
                    }
                }
            });
            
            bt_uninstall.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent("android.intent.action.DELETE");
                    intent.addCategory("android.intent.category.DEFAULT");
                    intent.setData(Uri.parse("package:"+getPackageName()));
                    startActivity(intent);
                }
            });
        }
    
    }
    package com.example.device;
    
    import android.app.admin.DeviceAdminReceiver;
    import android.content.Context;
    import android.content.Intent;
    
    public class DeviceAdmin extends DeviceAdminReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            super.onReceive(context, intent);
        }
    }
  • 相关阅读:
    SpringBoot中使用Spring Data Jpa 实现简单的动态查询的两种方法
    Spring data jpa 使用技巧记录
    Hibernate 关于实体映射常用注解
    Mysql数据库实用语句集
    免配置环境变量使用Tomcat+设置项目主页路径为http://localhost:8080+修改tomcat端口号
    Springboot+shiro配置笔记+错误小结
    python阳历转农历
    Aria2+WebUI+caddy搭建私有网盘
    java运算符优先级
    IntelliJ IDEA 快捷键
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/6282028.html
Copyright © 2011-2022 走看看