Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> android一鍵鎖屏代碼及個人理解

android一鍵鎖屏代碼及個人理解

編輯:Android開發實例

 要用到下面兩個類:

DeviceAdminReceiver 設備管理組件。這個類提供了一個方便解釋由系統發出的意圖的動作。你的設備管理應用程序必須包含一個DeviceAdminReceiver的子類。本程序中,就代表一個手機上的設備管理器. DevicePolicyManager 一個管理設備上規范的類。 大多數客戶端必須聲明一個用戶當前已經啟用的DeviceAdminReceiver。 這個DevicePolicyManager為一個或者多個DeviceAdminReceiver實例管理這些規范。
DevicePolicyManager 的實例有個方法叫lockNow可以直接鎖定屏幕.但是在這之前,需要激活程序中的設備管理器. 下面是主類LockActivity
  1. package com.iceman.test; 
  2.    
  3. import android.app.Activity; 
  4. import android.app.admin.DevicePolicyManager; 
  5. import android.content.ComponentName; 
  6. import android.content.Context; 
  7. import android.content.Intent; 
  8. import android.os.Bundle; 
  9.    
  10. public class LockActivity extends Activity { 
  11.    
  12.     private DevicePolicyManager policyManager; 
  13.    
  14.     private ComponentName componentName; 
  15.    
  16.     @Override 
  17.     public void onCreate(Bundle savedInstanceState) { 
  18.    
  19.         super.onCreate(savedInstanceState); 
  20.    
  21.         setContentView(R.layout.locklayout); 
  22.         policyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); 
  23.         componentName = new ComponentName(this, AdminReceiver.class); 
  24.         if (policyManager.isAdminActive(componentName)) {//判斷是否有權限(激活了設備管理器) 
  25.             policyManager.lockNow();// 直接鎖屏 
  26.             android.os.Process.killProcess(android.os.Process.myPid()); 
  27.         }else{ 
  28.             activeManager();//激活設備管理器獲取權限 
  29.         } 
  30.    
  31.     } 
  32.    
  33.    
  34.     @Override 
  35.     protected void onResume() {//重寫此方法用來在第一次激活設備管理器之後鎖定屏幕 
  36.         if (policyManager.isAdminActive(componentName)) { 
  37.             policyManager.lockNow(); 
  38.             android.os.Process.killProcess(android.os.Process.myPid()); 
  39.         } 
  40.         super.onResume(); 
  41.     } 
  42.    
  43.     private void activeManager() { 
  44.         //使用隱式意圖調用系統方法來激活指定的設備管理器 
  45.         Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); 
  46.         intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName); 
  47.         intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "一鍵鎖屏"); 
  48.         startActivity(intent); 
  49.     } 
  50.    

下面是設備管理器類LockReceiver,這是一個繼承自DeviceAdminReceiver的類,可以接收到激活/接觸激活的廣播,進行下一步操作,本程序中,只是簡單打印一下信息.

  1. package com.iceman.test; 
  2.    
  3. import android.app.admin.DeviceAdminReceiver; 
  4. import android.content.Context; 
  5. import android.content.Intent; 
  6.    
  7. public class LockReceiver extends DeviceAdminReceiver{ 
  8.    
  9.    
  10.     @Override 
  11.     public void onReceive(Context context, Intent intent) { 
  12.         super.onReceive(context, intent); 
  13.         System.out.println("onreceiver"); 
  14.     } 
  15.    
  16.     @Override 
  17.     public void onEnabled(Context context, Intent intent) { 
  18.         System.out.println("激活使用"); 
  19.         super.onEnabled(context, intent); 
  20.     } 
  21.    
  22.     @Override 
  23.     public void onDisabled(Context context, Intent intent) { 
  24.         System.out.println("取消激活"); 
  25.         super.onDisabled(context, intent); 
  26.     } 
  27.    
  28.    

主配置文件:

 

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     package="com.iceman.test" 
  4.     android:versionCode="1" 
  5.     android:versionName="1.0" > 
  6.    
  7.     <uses-sdk android:minSdkVersion="9" /> 
  8.    
  9.     <application 
  10.         android:icon="@drawable/ic_launcher" 
  11.         android:label="@string/app_name" > 
  12.         <activity 
  13.             android:name=".LockActivity" 
  14.             android:label="@string/app_name" 
  15.             android:theme="@android:style/Theme.Translucent" > 
  16.             <intent-filter> 
  17.                 <action android:name="android.intent.action.MAIN" /> 
  18.    
  19.                 <category android:name="android.intent.category.LAUNCHER" /> 
  20.             </intent-filter> 
  21.         </activity> 
  22.    
  23.         <receiver 
  24.             android:name=".LockReceiver" 
  25.             android:description="@string/app_name" 
  26.             android:label="@string/app_name" 
  27.             android:permission="android.permission.BIND_DEVICE_ADMIN" > 
  28.             <meta-data 
  29.                 android:name="android.app.device_admin" 
  30.                 android:resource="@xml/lock_screen" /> 
  31.    
  32.             <intent-filter> 
  33.                 <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> 
  34.             </intent-filter> 
  35.         </receiver> 
  36.     </application> 
  37.    
  38. </manifest> 

其中lock_screen是設備管理器的權限聲明,需要在res/xml目錄下以xml文件形式定義

 

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <device-admin xmlns:android="http://schemas.android.com/apk/res/android" > 
  3.     <uses-policies> 
  4.         <!-- 鎖定屏幕 --> 
  5.         <force-lock /> 
  6.     </uses-policies> 
  7. </device-admin> 

OK.現在自己也可以做一鍵鎖屏了.不用去網上找各種各樣帶廣告帶推送的了.

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved