设备管理器勾选后不能再取消了_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > 设备管理器勾选后不能再取消了

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

 2014/11/25 18:03:45  xiaochao1234  程序员俱乐部  我要评论(0)
  • 摘要:自己最近在学习Android过程中,下载了一个Demo尽然不能取消设备管理器,也不能卸载。自己猛一想这事如何实现的?首先AndroidManifest.xml:Xml代码<receiverandroid:name="com.dean.autosetting.DeviceMyReceiver"android:description="@string/description"android:label="@string/app_name"android:permission="android
  • 标签:设备

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

首先AndroidManifest.xml:

 

Xml代码 javascripts/syntaxhighlighter/clipboard_new.swf" type="application/x-shockwave-flash">ways" /> class="star" src="/Upload/Images/2014112518/40B102E0EF997EA6.png" alt="收藏代码" />
  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.   
  10.             <intent-filter>  
  11.                 <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />  
  12.                 <action android:name="android.intent.action.BOOT_COMPLETED" />  
  13.   
  14.                 <category android:name="android.intent.category.HOME" />  
  15.             </intent-filter>  
  16.         </receiver>  

 DeviceMyReceiver.java

 

Java代码 Intent%3B%0Aimport%20android.content.SharedPreferences%3B%0Aimport%20android.util.Log%3B%0Aimport%20android.widget.Toast%3B%0A%0Apublic%20class%20DeviceMyReceiver%20extends%20DeviceAdminReceiver%20%7B%0A%0A%20%20%20%20%40Override%0A%20%20%20%20public%20void%20onReceive(Context%20context%2C%20Intent%20intent)%20%7B%0A%20%20%20%20%20%20%20%20super.onReceive(context%2C%20intent)%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20Intent%20i%20%3D%20new%20Intent(context%2C%20MainActivity.class)%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20context.startActivity(i)%3B%0A%20%20%20%20%20%20%20%20Log.e(%22autosetting%22%2C%20%22receiver%20onReceive%22)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20%E8%8E%B7%E5%8F%96%E8%AE%BE%E5%A4%87%E5%AD%98%E5%82%A8%E7%9A%84%E6%95%B0%E5%80%BC%0A%20%20%20%20%20*%20%0A%20%20%20%20%20*%20%40param%20context%0A%20%20%20%20%20*%20%40return%0A%20%20%20%20%20*%2F%0A%20%20%20%20public%20static%20SharedPreferences%20getDevicePreference(Context%20context)%20%7B%0A%20%20%20%20%20%20%20%20return%20context.getSharedPreferences(DeviceMyReceiver.class.getName()%2C%200)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20%E5%AF%86%E7%A0%81%E7%9A%84%E7%89%B9%E7%82%B9%0A%20%20%20%20public%20static%20String%20PREF_PASSWORD_QUALITY%20%3D%20%22password_quality%22%3B%0A%20%20%20%20%2F%2F%20%E5%AF%86%E7%A0%81%E7%9A%84%E9%95%BF%E5%BA%A6%0A%20%20%20%20public%20static%20String%20PREF_PASSWORD_LENGTH%20%3D%20%22password_length%22%3B%0A%0A%20%20%20%20public%20static%20String%20PREF_MAX_FAILED_PW%20%3D%20%22max_failed_pw%22%3B%0A%0A%20%20%20%20void%20showToast(Context%20context%2C%20CharSequence%20text)%20%7B%0A%20%20%20%20%20%20%20%20Toast.makeText(context%2C%20text%2C%20Toast.LENGTH_SHORT).show()%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%40Override%0A%20%20%20%20public%20void%20onEnabled(Context%20context%2C%20Intent%20intent)%20%7B%0A%20%20%20%20%20%20%20%20showToast(context%2C%20%22%E8%AE%BE%E5%A4%87%E7%AE%A1%E7%90%86%EF%BC%9A%E5%8F%AF%E7%94%A8%22)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%40Override%0A%20%20%20%20public%20void%20onDisabled(Context%20context%2C%20Intent%20intent)%20%7B%0A%20%20%20%20%20%20%20%20showToast(context%2C%20%22%E8%AE%BE%E5%A4%87%E7%AE%A1%E7%90%86%EF%BC%9A%E4%B8%8D%E5%8F%AF%E7%94%A8%22)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%40Override%0A%20%20%20%20public%20CharSequence%20onDisableRequested(Context%20context%2C%20Intent%20intent)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20%E8%BF%99%E9%87%8C%E5%A4%84%E7%90%86%20%E4%B8%8D%E5%8F%AF%E7%BC%96%E8%BE%91%E8%AE%BE%E5%A4%87%E3%80%82%0A%20%20%20%20%20%20%20%20Intent%20intent2%20%3D%20new%20Intent(context%2C%20NoticeSetting.class)%3B%0A%20%20%20%20%20%20%20%20intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)%3B%0A%20%20%20%20%20%20%20%20context.startActivity(intent2)%3B%0A%20%20%20%20%20%20%20%20context.stopService(intent)%3B%2F%2F%20%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%81%9C%E6%AD%A2%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%20%2F%2F%20%22%E8%BF%99%E6%98%AF%E4%B8%80%E4%B8%AA%E5%8F%AF%E9%80%89%E7%9A%84%E6%B6%88%E6%81%AF%EF%BC%8C%E8%AD%A6%E5%91%8A%E6%9C%89%E5%85%B3%E7%A6%81%E6%AD%A2%E7%94%A8%E6%88%B7%E7%9A%84%E8%AF%B7%E6%B1%82%22%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%40Override%0A%20%20%20%20public%20void%20onPasswordChanged(Context%20context%2C%20Intent%20intent)%20%7B%0A%20%20%20%20%20%20%20%20showToast(context%2C%20%22%E8%AE%BE%E5%A4%87%E7%AE%A1%E7%90%86%EF%BC%9A%E5%AF%86%E7%A0%81%E5%B7%B1%E7%BB%8F%E6%94%B9%E5%8F%98%22)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%40Override%0A%20%20%20%20public%20void%20onPasswordFailed(Context%20context%2C%20Intent%20intent)%20%7B%0A%20%20%20%20%20%20%20%20showToast(context%2C%20%22%E8%AE%BE%E5%A4%87%E7%AE%A1%E7%90%86%EF%BC%9A%E6%94%B9%E5%8F%98%E5%AF%86%E7%A0%81%E5%A4%B1%E8%B4%A5%22)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%40Override%0A%20%20%20%20public%20void%20onPasswordSucceeded(Context%20context%2C%20Intent%20intent)%20%7B%0A%20%20%20%20%20%20%20%20showToast(context%2C%20%22%E8%AE%BE%E5%A4%87%E7%AE%A1%E7%90%86%EF%BC%9A%E6%94%B9%E5%8F%98%E5%AF%86%E7%A0%81%E6%88%90%E5%8A%9F%22)%3B%0A%20%20%20%20%7D%0A%0A%7D%0A" /> 收藏代码
  1. package com.dean.autosetting;  
  2.   
  3. import android.app.admin.DeviceAdminReceiver;  
  4. import android.content.Context;  
  5. import android.content.Intent;  
  6. import android.content.SharedPreferences;  
  7. import android.util.Log;  
  8. import android.widget.Toast;  
  9.   
  10. public class DeviceMyReceiver extends DeviceAdminReceiver {  
  11.   
  12.     @Override  
  13.     public void onReceive(Context context, Intent intent) {  
  14.         super.onReceive(context, intent);  
  15.         // Intent i = new Intent(context, MainActivity.class);  
  16.         // i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
  17.         // context.startActivity(i);  
  18.         Log.e("autosetting", "receiver onReceive");  
  19.     }  
  20.   
  21.     /** 
  22.      * 获取设备存储的数值 
  23.      *  
  24.      * @param context 
  25.      * @return 
  26.      */  
  27.     public static SharedPreferences getDevicePreference(Context context) {  
  28.         return context.getSharedPreferences(DeviceMyReceiver.class.getName(), 0);  
  29.     }  
  30.   
  31.     // 密码的特点  
  32.     public static String PREF_PASSWORD_QUALITY = "password_quality";  
  33.     // 密码的长度  
  34.     public static String PREF_PASSWORD_LENGTH = "password_length";  
  35.   
  36.     public static String PREF_MAX_FAILED_PW = "max_failed_pw";  
  37.   
  38.     void showToast(Context context, CharSequence text) {  
  39.         Toast.makeText(context, text, Toast.LENGTH_SHORT).show();  
  40.     }  
  41.   
  42.     @Override  
  43.     public void onEnabled(Context context, Intent intent) {  
  44.         showToast(context, "设备管理:可用");  
  45.     }  
  46.   
  47.     @Override  
  48.     public void onDisabled(Context context, Intent intent) {  
  49.         showToast(context, "设备管理:不可用");  
  50.     }  
  51.   
  52.     @Override  
  53.     public CharSequence onDisableRequested(Context context, Intent intent) {  
  54.         // 这里处理 不可编辑设备。  
  55.         Intent intent2 = new Intent(context, NoticeSetting.class);  
  56.         intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
  57.         context.startActivity(intent2);  
  58.         context.stopService(intent);// 是否可以停止  
  59.         return ""; // "这是一个可选的消息,警告有关禁止用户的请求";  
  60.     }  
  61.   
  62.     @Override  
  63.     public void onPasswordChanged(Context context, Intent intent) {  
  64.         showToast(context, "设备管理:密码己经改变");  
  65.     }  
  66.   
  67.     @Override  
  68.     public void onPasswordFailed(Context context, Intent intent) {  
  69.         showToast(context, "设备管理:改变密码失败");  
  70.     }  
  71.   
  72.     @Override  
  73.     public void onPasswordSucceeded(Context context, Intent intent) {  
  74.         showToast(context, "设备管理:改变密码成功");  
  75.     }  
  76.   
  77. }  

 核心代码断:

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文件。

上一篇: WPF控件保存为图片 下一篇: 没有下一篇了!
发表评论
用户名: 匿名