`
带个回家
  • 浏览: 139856 次
  • 性别: 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仿QQ相册选择器

    在Android开发中,创建一个类似QQ相册的选择器是...以上就是“android仿QQ相册选择器”项目可能涉及到的主要技术点,每个点都可以进一步细化和深入学习,对于Android开发者来说,这些都是提升应用用户体验的重要技能。

    Android学习笔记

    遇到错误时,例如"No classfiles specified"或"Conversion to Dalvik format failed with error 1",可能需要清理项目("Project" -&gt; "Clean")或禁用自动构建("Project" -&gt; 取消勾选"Build Automatically")。...

    Android单元测试框架搭建手册

    - **打开AVD Manager**:通过Tools -&gt; AVD Manager打开虚拟设备管理器。 - **创建新设备**:点击“Create Virtual Device…”创建新的虚拟设备。 - **配置虚拟设备**:选择设备规格、Android API版本以及其他配置...

    android 2.0安装

    安装完成后,接下来创建Android Virtual Device (AVD),这是一个软件模拟的Android设备,用于测试应用。在"Android SDK and AVD Manager"中选择"Virtual Devices",然后点击"New"。你需要设定AVD的名称,选择目标API...

    Android 登录界面记住密码功能源码

    考虑到Android设备的多样性,实现的代码需要考虑到不同Android版本的兼容性问题。例如,某些API级别的SharedPreferences可能有差异,加密库的使用也需要确保能在低版本系统上运行。 8. **最佳实践**: 在实际开发...

    Android手机程序开发环境搭建

    - **步骤4**:取消勾选`Show only the latest versions of available software`,以便能看到所有可用版本。 - **步骤5**:找到并选中`ADT Plugin for Eclipse`,点击`Next`继续。 - **步骤6**:阅读并接受许可协议,...

    Android如何删除App导入的日历账户.rar

    如果你只是想暂时阻止日历同步,而不想永久删除账户,可以在完成上述步骤后,再次进入同步设置,重新勾选“日历”,以恢复同步。 在“咨询课程.html”和“咨询课程_files”这两个文件中,可能包含了更详细的教程或...

    AndroidStudio界面详解.doc

    工具栏中包含一些频繁使用的文本操作按钮(例如,剪切、复制、粘贴、撤销、重做),以及各种各样的管理器按钮(如 SDK 管理器、Android 虚拟设备管理器),还有运行和调试应用程序的按钮。工具栏中所有的按钮都有...

    安装Windows和Android双系统最新最全的资料

    - 在资源管理器中取消勾选“隐藏受保护的系统文件”,显示隐藏的系统文件和分区。 - 使用Windows自带的磁盘管理器确认活动主分区的位置。 - 如果发现活动主分区未分配盘符,则需为其分配盘符,以便于后续操作。 ...

    Android虚拟机的环境创建.pdf

    Android虚拟机环境的建立对于开发者和爱好者来说是至关重要的,它允许用户在不购买实际设备的情况下,进行应用开发、系统测试和功能验证。 首先,为了运行Android虚拟机,我们需要确保系统已经安装了Java Runtime ...

    Android开发环境配置问题

    3. 在“Eclipse”-&gt; “首选项”-&gt; “Android”-&gt; “构建”中取消勾选“Skip packaging and dexing until export or launch....”选项,以确保每次构建都会生成apk。 此外,还有其他可能的解决方案,如: 1. 删除...

    android相册多选功能,可以多选,类似微信的发图片功能

    最后,进行广泛的兼容性测试,确保该功能在不同版本的Android系统以及各种品牌和型号的设备上都能正常工作。 通过上述步骤,你可以构建一个类似微信的Android相册多选功能。在实际开发过程中,还需要根据项目需求...

    安卓图片多选相关-Android发送多张图片.rar

    在Android平台上,实现图片多选功能是常见的需求,特别是在社交应用、相册应用或文件管理器中。这个“安卓图片多选相关-Android发送多张图片.rar”压缩包可能包含了实现这一功能的相关代码示例。下面,我们将深入...

    Android数据存储——SharedPreferences(登入记住密码)

    在Android应用开发中,数据存储是至关重要的一个环节,它涉及到用户信息的持久化,使得应用在退出或设备重启后仍能保持之前的状态。在众多的数据存储方式中,SharedPreferences是一种轻量级的选择,尤其适用于存储小...

    相机或者相册选取多张图片

    在移动设备上,如智能手机和平板电脑,用户经常需要从相机或相册中选择多张图片进行分享、编辑或其他操作。这个过程涉及到一系列的技术实现,包括图像处理、用户界面设计和多选功能的实现。以下将详细介绍这个过程中...

    android记住密码自动登录实例

    在Android开发中,"记住密码"和"自动登录"功能是常见的用户便利性设计,它允许用户在登录应用后选择保存其凭据,以便在下次打开应用时无需再次输入。这个"android记住密码自动登录实例"应该包含了实现这一功能的具体...

    安卓Android源码——自定义本地相册的功能,可以多选图片用.rar

    在Android中,图片通常存储在设备的外部存储(SD卡)或者内部存储的特定目录下,如DCIM、Pictures等。Android提供了MediaStore内容提供者,用于访问这些多媒体文件。在自定义相册时,我们需要查询MediaStore来获取...

    安卓模拟器安装教程

    启动动画结束后,Android的主屏幕将显现出来,此时你可以开始操作模拟器,就像在真实的Android设备上一样。 通过Android模拟器,你可以安装APK文件,测试应用程序,或者只是简单地体验Android系统的各种功能。此外...

    十个小技巧让你的android手机更省电

    您可以在设置中找到“应用管理器”或类似选项,然后查看每个应用所占用的资源情况,并根据实际情况选择禁用非核心功能。此外,安装第三方任务管理工具(如Advanced Task Killer)也能帮助更好地控制这些进程,进一步...

Global site tag (gtag.js) - Google Analytics