time 
设为首页】【收藏本站
当前位置: 主页 > 电脑网络 > 操作系统 > 嵌入式 > Android > android一键锁屏代码及个人理解

android一键锁屏代码及个人理解

时间:2012-10-11 12:47 点击:17215次 字体:[ ]




 要用到下面两个类:

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.现在自己也可以做一键锁屏了.不用去网上找各种各样带广告带推送的了.



本文地址 : http://www.fengfly.com/plus/view-209437-1.html
标签: Android 代码 一键锁屏
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码: