`
带个回家
  • 浏览: 138734 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Android 学习 设备管理器勾选后不能再取消了

阅读更多

自己最近在学习Android过程中,下载了一个Demo尽然不能取消设备管理器,也不能卸载。自己猛一想这事如何实现的?

首先AndroidManifest.xml:

 

<receiver
            android:name="com.dean.autosetting.DeviceMyReceiver"
            android:description="@string/description"
            android:label="@string/app_name"
            android:permission="android.permission.BIND_DEVICE_ADMIN" >
            <meta-data
                android:name="android.app.device_admin"
                android:resource="@xml/device_admin" />

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

                <category android:name="android.intent.category.HOME" />
            </intent-filter>
        </receiver>

 DeviceMyReceiver.java

 

package com.dean.autosetting;

import android.app.admin.DeviceAdminReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.util.Log;
import android.widget.Toast;

public class DeviceMyReceiver extends DeviceAdminReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent);
        // Intent i = new Intent(context, MainActivity.class);
        // i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        // context.startActivity(i);
        Log.e("autosetting", "receiver onReceive");
    }

    /**
     * 获取设备存储的数值
     * 
     * @param context
     * @return
     */
    public static SharedPreferences getDevicePreference(Context context) {
        return context.getSharedPreferences(DeviceMyReceiver.class.getName(), 0);
    }

    // 密码的特点
    public static String PREF_PASSWORD_QUALITY = "password_quality";
    // 密码的长度
    public static String PREF_PASSWORD_LENGTH = "password_length";

    public static String PREF_MAX_FAILED_PW = "max_failed_pw";

    void showToast(Context context, CharSequence text) {
        Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onEnabled(Context context, Intent intent) {
        showToast(context, "设备管理:可用");
    }

    @Override
    public void onDisabled(Context context, Intent intent) {
        showToast(context, "设备管理:不可用");
    }

    @Override
    public CharSequence onDisableRequested(Context context, Intent intent) {
        // 这里处理 不可编辑设备。
        Intent intent2 = new Intent(context, NoticeSetting.class);
        intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent2);
        context.stopService(intent);// 是否可以停止
        return ""; // "这是一个可选的消息,警告有关禁止用户的请求";
    }

    @Override
    public void onPasswordChanged(Context context, Intent intent) {
        showToast(context, "设备管理:密码己经改变");
    }

    @Override
    public void onPasswordFailed(Context context, Intent intent) {
        showToast(context, "设备管理:改变密码失败");
    }

    @Override
    public void onPasswordSucceeded(Context context, Intent intent) {
        showToast(context, "设备管理:改变密码成功");
    }

}

 核心代码断:

@Override
    public CharSequence onDisableRequested(Context context, Intent intent) {
        // 这里处理 不可编辑设备。
        Intent intent2 = new Intent(context, NoticeSetting.class);
        intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent2);
        context.stopService(intent);// 是否可以停止
        return ""; // "这是一个可选的消息,警告有关禁止用户的请求";
    }

 核心为 onDisableRequested方法可以做很作操作。正常情况下是取消勾选时,提示用户一句话。这里  context.stopService(intent);我把设置界面给关了。然后呢 跳转到我制定死机界面 NoticeSetting。NoticeSetting界面按键任何都不管用,只能重启。。

 

PS: 只是学习,不建议大家做流氓软件。本人自己也很抵触。学习之中,如果大家有问题欢迎留言,或者版本兼容问题。共同学习。 大家如果遇到这样的软件,可以用比较权威的软件卸载,如果还卸载不了,可以Root后,直接到app文件夹中删除apk文件。

分享到:
评论

相关推荐

    Android学习笔记(十)——实现新闻列表

    Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) Android学习笔记(四)Android 中Activity页面的...

    android listview和checkbox联合使用选中和取消

    android listview和checkbox联合使用,选中和取消

    android权限级别探索(三),设置 DeviceOwner及api收集

    无需将应用勾选为设备管理器,获取到deviceowner权限后会自动勾选。 二、获取DeviceOwner权限 Google没有提供类似获取设备管理器权限那样的api,所以个人设备的deviceowner权限一般是通过adb shell命令赋予的,而...

    Vue中Table组件Select的勾选和取消勾选事件详解

    主要为大家详细介绍了Vue中Table组件Select的勾选和取消勾选事件详解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    QTreeWidget的勾选,未勾选,半勾选

    实现一个QTreeWidget的勾选,未勾选,半勾选: 功能: 1.勾选树控件的节点,其子节点全部选中或全部取消选中 2.父节点选中或者部分选中 欢迎拍砖。

    家庭版取消灰色勾选加密内容以便保护数据的工具

    取消灰色勾选加密内容以便保护数据的工具。下载解压批处理,将要解密的文件或文件夹拖放到批处理上释放即可解密。不行的话可以找我。

    Android SDK Platform(Android 6.0系统)

    这是从Android SDK manager下载的针对于API Level 23(Android 6.0棉花糖)的platform,如果在SDK manager无法下载,可直接下载该资源,使用方法在压缩包中,需下载后方可查看。

    android SD卡上文本文件浏览选择器 勾选文件返回路径

    自动扫描SD卡上所有的txt文件,在list中显示,用户可勾选需要的文件,点击导入之后会返回文件路径。 类似于图片查找,只需要在activity中使用调用扫描文件就可以方便的使用

    C#+AE+treelist实现shpfile的加载、勾选与取消

    C#+AE+treelist实现shpfile的加载、勾选与取消// // //

    QTreeWidget的勾选,未勾选,半勾选 (重新上传)

    实现一个QTreeWidget的勾选,未勾选,半勾选: 功能: 1.勾选树控件的节点,其子节点全部选中或全部取消选中 2.父节点选中或者部分选中 欢迎拍砖。 原来的资源已经涨到7分了,重新上传一下,还是1分。

    js checkbox全选 反选 取消全部设置表单html复选框勾选

    js checkbox全选 反选 取消全部设置表单html复选框勾选

    自定义可勾选的ListView

    在listview到item里面包含checkbox,是否遇到了选中一写条目,然后往下拖动再拖回来,选择到条目消失? 是否觉得用android.R.layout.simple_list_item_checked来作为list item的layout很方便且没有上面到问题,但是...

    Android代码-AndroidAcp

    处理权限拒绝,或勾选不再询问,导致不能正常使用功能的提示框,支持跳转设置权限界面开启权限,所有提示框文字可自定义。 效果图 使用Gradle构建时添加一下依赖即可: compile 'com.mylhyl:acp:1.2.0' 使用说明 ...

    Android第一次开发

    Android第一次开发简介学习Android一定要有Java基础,最差也要类似Java的其他面对像对象语言的基础。

    android 登录界面

    登录操作实现了自动登录,记住密码,用户名下拉框选择删除。是greenDao+popopwindow结合使用实现的。

    AMD无法使用Android studio解决方法

    想使用Android studio,自己的电脑系统是win10家庭版,在百度找到勾选hyper-v就能用,然后发现在自己的电脑上面找不到,又要去BIOS界面里面更改配置发现也不行, 这些坑我都踩过。。。。 那请你接着往下看 当初刚上...

    【安卓项目】——新闻资讯类项目

    Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) Android学习笔记(四)Android 中Activity页面的跳转及传值 Android学习笔记(五)——Toast提示、Dialog对话框、Menu菜单 ...

    勾选后背景变色的样式

    勾选后背景变色的样式! 很值得下载看看!资源免费,大家分享!!

    AndroidRobot

    设备管理: 设备管理器可以让用户很直观的看到目前自己电脑上有哪些手机是可以使用的,用户只需要选择一个需要使用的设备,就可以对其进行录制以及自动化测试的步骤。它可以实时的显示用户设备的Serial Number。 ...

Global site tag (gtag.js) - Google Analytics