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

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

首先AndroidManifest.xml:

Xml代码  

  1. <receiver
  2. android:name="com.dean.autosetting.DeviceMyReceiver"
  3. android:description="@string/description"
  4. android:label="@string/app_name"
  5. android:permission="android.permission.BIND_DEVICE_ADMIN" >
  6. <meta-data
  7. android:name="android.app.device_admin"
  8. android:resource="@xml/device_admin" />
  9. <intent-filter>
  10. <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
  11. <action android:name="android.intent.action.BOOT_COMPLETED" />
  12. <category android:name="android.intent.category.HOME" />
  13. </intent-filter>
  14. </receiver>

DeviceMyReceiver.java

Java代码  

  1. package com.dean.autosetting;
  2. import android.app.admin.DeviceAdminReceiver;
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.content.SharedPreferences;
  6. import android.util.Log;
  7. import android.widget.Toast;
  8. public class DeviceMyReceiver extends DeviceAdminReceiver {
  9. @Override
  10. public void onReceive(Context context, Intent intent) {
  11. super.onReceive(context, intent);
  12. // Intent i = new Intent(context, MainActivity.class);
  13. // i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  14. // context.startActivity(i);
  15. Log.e("autosetting", "receiver onReceive");
  16. }
  17. /**
  18. * 获取设备存储的数值
  19. *
  20. * @param context
  21. * @return
  22. */
  23. public static SharedPreferences getDevicePreference(Context context) {
  24. return context.getSharedPreferences(DeviceMyReceiver.class.getName(), 0);
  25. }
  26. // 密码的特点
  27. public static String PREF_PASSWORD_QUALITY = "password_quality";
  28. // 密码的长度
  29. public static String PREF_PASSWORD_LENGTH = "password_length";
  30. public static String PREF_MAX_FAILED_PW = "max_failed_pw";
  31. void showToast(Context context, CharSequence text) {
  32. Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
  33. }
  34. @Override
  35. public void onEnabled(Context context, Intent intent) {
  36. showToast(context, "设备管理:可用");
  37. }
  38. @Override
  39. public void onDisabled(Context context, Intent intent) {
  40. showToast(context, "设备管理:不可用");
  41. }
  42. @Override
  43. public CharSequence onDisableRequested(Context context, Intent intent) {
  44. // 这里处理 不可编辑设备。
  45. Intent intent2 = new Intent(context, NoticeSetting.class);
  46. intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  47. context.startActivity(intent2);
  48. context.stopService(intent);// 是否可以停止
  49. return ""; // "这是一个可选的消息,警告有关禁止用户的请求";
  50. }
  51. @Override
  52. public void onPasswordChanged(Context context, Intent intent) {
  53. showToast(context, "设备管理:密码己经改变");
  54. }
  55. @Override
  56. public void onPasswordFailed(Context context, Intent intent) {
  57. showToast(context, "设备管理:改变密码失败");
  58. }
  59. @Override
  60. public void onPasswordSucceeded(Context context, Intent intent) {
  61. showToast(context, "设备管理:改变密码成功");
  62. }
  63. }

核心代码断:

Java代码  

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

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

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

时间: 2024-10-25 16:55:30

Android学习——设备管理器勾选后不能再取消了的相关文章

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

自己最近在学习Android过程中,下载了一个Demo尽然不能取消设备管理器,也不能卸载.自己猛一想这事如何实现的? 首先AndroidManifest.xml: Xml代码   <receiver android:name="com.dean.autosetting.DeviceMyReceiver" android:description="@string/description" android:label="@string/app_name&

Android学习Scroller(四)——实现拉动后回弹的布局

MainActivity如下: package cc.testscroller2; import android.os.Bundle; import android.app.Activity; /** * Demo描述: * 实现可以拉动后回弹的布局. * 类似于下拉刷新的. * * 参考资料: * 1 http://gundumw100.iteye.com/blog/1884373 * 2 http://blog.csdn.net/gemmem/article/details/7321910

WPF DataGrid的DataGridCheckBoxColumn列前台勾选后对应的绑定数据并未更新

WPF用的时间也不短了,还是遇到一些低级问题,好惭愧. 问题是这样的,WPF的DataGrid中,DataGridCheckBoxColumn列绑定了数据源中的一个boo类型的字段,模式为TwoWay,但界面中勾选后,数据源中的对应字段内容并未更新, 这样就好了 Binding="{Binding IsEmergency,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" 记录一下答案使这里找到的,微软官方论坛好强大. https://s

android项目设备管理器

设备管理器就是能够清除数据,和锁屏等等的操作 在这里我们要通过短信拦截器(广播接受者进行拦截)然后根据短信内容进行拦截, 具体操作是这样的: 首先要建立一个类来继承DeviceAdminReceiver 然后在清单文件里进行注册 <receiver            android:name=".AdminRecever"            android:description="@string/sample_device_admin_description&

关于android的设备管理器-DevicePolicyManager(一)

在Andorid的设置->安全里面有个设备管理器的选项,相信大部分android用户都不太会去注意这个东西.近期在安装了一个应用之后发现这个里面的东西变了.怎么回事呢,研究研究看看.</span> 老思路,从已有的最明显的线索開始分析."设备管理器"这几个字就是最好的线索,在Setting的package里面搜搜,一大堆多语言话的字符串,这个不是我要找的,我要找的是谁在用这个字符串.在一个布局文件中找到了: res/xml/security_settings.xml

关于android的设备管理器-DevicePolicyManager(二)

上回分析到了/data/system/device_policies.xml这个文件是在package change事件发生的时候变化的,那么来看看它的内容.根据以往的经验,在/data/system下面的几个文件(packages.xml  packages.list)都是PackageManager扫面各个package的Manifest文件生成的,估计这文件也差不多吧. <?xml version='1.0' encoding='utf-8' standalone='yes' ?> &l

ztree学习---将默认勾选的展开

这里只给出前台页面上的代码,数据可以从后台获取,注意,在封装数据的时候,注意:Id(节点的id,可以是数字也可以是字符串) , pid(父亲节点的id) , name(节点名称)不能少 . html页面插入的代码: <div id="dialog-confirm" class="hide"> <input type="hidden" id="uid" value=""/> <d

android 修改设备管理器中的磁盘驱动器名

1)修改F_mass_storage.c中fsg_common_init()的此处代码: snprintf(common->inquiry_string, sizeof common->inquiry_string, "%-8s%-16s%04x", cfg->vendor_name ?: "Linux", /* Assume product name dependent on the first LUN */ cfg->product_na

Android Device Administration 设备管理器——一键锁屏的实现

Android Device Administration 设备管理器--锁屏的实现 最近研究了一下安全这一块的内容,当然,我是比较水的,所以也拿不出什么好知识点,但是有一些冷门的东西我还是可以聊聊的,就拿这个锁屏来说吧,我们现在市面上有一些一键锁屏的软件 我们可以看到,是数不胜数的,所以,其实他一开始使用的时候,都需要请求设备管理器 我们可以看到,只有当我们激活的时候,我们才可以使用它,那么,他到底是什么东西呢?其实,当我们激活之后,我们可以在我们手机的设置--安全--设备管理器里面看到他的所