Android學習——設備管理器勾選後不能再取消了

本身最近在學習Android過程當中,下載了一個Demo盡然不能取消設備管理器,也不能卸載。本身猛一想這事如何實現的? java

首先AndroidManifest.xml: android

 

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.   
  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 app

 

Java代碼   收藏代碼
  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. }  

 核心代碼斷: ide

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

相關文章
相關標籤/搜索