现在三个类,小马就不一一解释,至于英语不好的朋友们,可以自行用工具查询下里面出现的单词,小马英语一般能用工具查到的,你照样可以,试下吧

     1.DevicePolicyManager

Public interface for managing policies enforced on a device. Most clients

                  of this class must  have published a DeviceAdminReceiver that the user

                 has currently enabled.

     2.DeviceAdminReceiver

Base class for implementing a device administration component. This class provides a

                convenience for interpreting the raw intent actions that are sent by the system.

     3.DeviceAdminInfo

This class is used to specify meta information of a device administrator component.

 

再不懂的可以在网上查下,以下是小马查到的,贴出来:

  

DevicePolicyManager

这是设备管理的主类。通过它可以实现屏幕锁定、屏幕亮度调节、出厂设置等功能。

 

DeviceAdminReceiver

该类继承自 BroadcastReceiver 。 从源码可以看到,其实就是实现了一个OnReceive方法,该方法中根据不同的Action,执行相应的操作。 比如,如果激活成功,那么Action就是ACTION_DEVICE_ADMIN_ENABLED, 据此调用 onEnabled 方法。

 

DeviceAdminInfo

包括设备信息,Info,就是Information嘛,呵,,乱猜也可以猜到,至于里面什么属性,到时候朋友们可以直接"."下就知道啦。

 

  比如:

       DeviceAdminReceiver.USES_POLICY_FORCE_LOCK , 这个就是本次要用的"强制锁定屏幕"的权限. 不过这些权限一般都直接通过XML文件来定义。 稍后你就会看到。

 

       Android手机中手机屏幕的锁定方式有以下几种 ,不文字描述了,直接上图,看着爽

 

怎么在设备管理器找到Android Phone 怎么找出设备管理器_ide

得瑟一下,今天刚升的4.0.3,吼吼,,帅。。。

以下是小马拖的布局,因为只讲功能,界面就不说什么美观不美观了,拖三个按钮,三个按钮看按钮上的的文本内容就知道是用在什么地方的, 不多讲,今天小马先测试下系统锁,因为没学会走呢,就先不去学跑了,大伙跟着小马一起慢慢来,先从简单的开始吧。

界面效果如下:

 

怎么在设备管理器找到Android Phone 怎么找出设备管理器_小马_02

点击第一个按钮会跳到权限提醒页面,如图所示:

 

怎么在设备管理器找到Android Phone 怎么找出设备管理器_android_03

上面这个页面只是提醒你你要激活的所有设备权限,点击激活后会跳回首页,再去点击系统锁使用时,就达到咱们的目的啦,吼吼。。如图所示:

 

怎么在设备管理器找到Android Phone 怎么找出设备管理器_android_04

光看我做的效果可不行,大家别忘了在全局配置文件里面配置,不然报错的,添加以下代码:

 

1. <receiver 
2. android:name=".AdminReceiver" 
3. android:description="@string/description" 
4. android:label="@string/labelValue" 
5. android:permission="android.permission.BIND_DEVICE_ADMIN" 
6. > 
7. <meta-data  
8. android:name="android.app.device_admin" 
9. android:resource="@xml/lockourscreen"/> 
10. <intent-filter> 
11. <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> 
12. </intent-filter> 
13.              
14. </receiver>


下面我贴出完整的代码,供朋友们学习使用,有不懂之处,可直接提出疑问,我们共同交流:

主类:

1. package com.xiaoma.www; 
2.  
3. import com.xiaoma.www.R; 
4.  
5. import android.app.Activity; 
6. import android.app.admin.DevicePolicyManager; 
7. import android.content.ComponentName; 
8. import android.content.Context; 
9. import android.content.Intent; 
10. import android.os.Bundle; 
11. import android.util.Log; 
12. import android.view.View; 
13. import android.view.View.OnClickListener; 
14. import android.widget.Button; 
15.  
16.  
17. /**  
18. * @Title: DevicePolicyManagerDemoActivity.java
19. * @Package com.xiaoma.www
20. * @Description: 屏幕锁测试
21. * @author MZH
22. * @version V2.2
23. */ 
24. public class DevicePolicyManagerDemoActivity extends Activity { 
25.      
26. private Button startPermissionBtn; 
27. private Button stopPermissionBtn; 
28. private Button sysLockBtn; 
29.      
30. private DevicePolicyManager dpm; 
31. private ComponentName componentName ; 
32. /** Called when the activity is first created. */ 
33. @Override 
34. public void onCreate(Bundle savedInstanceState) { 
35. super.onCreate(savedInstanceState); 
36.         setContentView(R.layout.main); 
37. //初始化 
38.         init(); 
39.     } 
40.      
41. /**
42.      * 初始化实现
43.      */ 
44. private void init(){ 
45. //资源声明定位 
46.         startPermissionBtn = (Button)findViewById(R.id.button1); 
47.         stopPermissionBtn = (Button)findViewById(R.id.button2); 
48.         sysLockBtn = (Button)findViewById(R.id.button3); 
49.          
50.         startPermissionBtn.setOnClickListener(listener); 
51.         stopPermissionBtn.setOnClickListener(listener); 
52.         sysLockBtn.setOnClickListener(listener); 
53.          
54. //取得系统服务 
55.         dpm  = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE); 
56. new ComponentName(this, AdminReceiver.class); 
57.          
58.     } 
59.      
60.      
61. /**
62.      * 按钮监听器的实现,此处小马讲下,在实现监听的时候不要在一个分支里面写太多逻辑处理
63.      * 分支只负责分支,不负责处理,要处理的话可以模块化,处理函数抽出去就可以了
64.      * 小马希望大家从一开始就养成个好习惯,吼吼。。
65.      */ 
66. private OnClickListener listener = new OnClickListener() { 
67. @Override 
68. public void onClick(View v) { 
69. //以下是三个按钮分别处理的事件实现 
70. switch (v.getId()) { 
71. case R.id.button1: 
72. //开启设备权限 
73.                 startDeviceManager(); 
74. break; 
75. case R.id.button2: 
76. //停止设备权限 
77.                 stopDeviceManager(); 
78. break; 
79. case R.id.button3: 
80. //调用系统锁 
81.                 sysLock(); 
82. break; 
83. default: 
84. break; 
85.             } 
86.         } 
87.     }; 
88.      
89. /**
90.      * 启动设备管理权限
91.      */ 
92. private void startDeviceManager(){ 
93. //添加一个隐式意图,完成设备权限的添加  
94. //这个Intent (DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN)跳转到 权限提醒页面 
95. //并传递了两个参数EXTRA_DEVICE_ADMIN 、 EXTRA_ADD_EXPLANATION 
96. new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); 
97.          
98. //权限列表 
99. //EXTRA_DEVICE_ADMIN参数中说明了用到哪些权限,  
100.         intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName); 
101.          
102. //描述(additional explanation) 
103. //EXTRA_ADD_EXPLANATION参数为附加的说明 
104. "--小马坏,小马爱,小马瓜瓜怪--"); 
105.          
106. 0); 
107.          
108.         } 
109.      
110. /**
111.      * 禁用设备管理权限方法实现
112.      */ 
113. private void stopDeviceManager(){ 
114. "XiaoMaGuo","------ unActiveManage ------"); 
115. boolean active = dpm.isAdminActive(componentName); 
116. if (active) { 
117.             dpm.removeActiveAdmin(componentName); 
118.         } 
119.     } 
120.      
121. /**
122.      * 调用系统锁方法实现
123.      */ 
124. private void sysLock(){ 
125. boolean active = dpm.isAdminActive(componentName); 
126. if (active) { 
127.             dpm.lockNow(); 
128.         } 
129.     } 
130.      
131. }


接收类:

1. package com.xiaoma.www; 
2.  
3. import android.app.admin.DeviceAdminReceiver; 
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.IBinder; 
9. import android.util.Log; 
10. import android.widget.Toast; 
11. public class AdminReceiver extends DeviceAdminReceiver { 
12. @Override 
13. public DevicePolicyManager getManager(Context context) { 
14. "XiaoMaGuo", "调用了getManager()方法"); 
15. return super.getManager(context); 
16.     } 
17. @Override 
18. public ComponentName getWho(Context context) { 
19. "XiaoMaGuo", "调用了getWho()方法"); 
20. return super.getWho(context); 
21.     } 
22.      
23. /**
24.      * 禁用
25.      */ 
26. @Override 
27. public void onDisabled(Context context, Intent intent) { 
28. "XiaoMaGuo", "调用了onDisabled()方法"); 
29. "禁用设备管理", Toast.LENGTH_SHORT).show(); 
30.          
31. super.onDisabled(context, intent); 
32.     } 
33. @Override 
34. public CharSequence onDisableRequested(Context context, Intent intent) { 
35. "XiaoMaGuo", "调用了onDisableRequested()方法"); 
36. return super.onDisableRequested(context, intent); 
37.     } 
38.      
39. /**
40.      * 激活
41.      */ 
42. @Override 
43. public void onEnabled(Context context, Intent intent) { 
44. "XiaoMaGuo", "调用了onEnabled()方法"); 
45. "启动设备管理", Toast.LENGTH_SHORT).show(); 
46.          
47. super.onEnabled(context, intent); 
48.     } 
49. @Override 
50. public void onPasswordChanged(Context context, Intent intent) { 
51. "XiaoMaGuo", "调用了onPasswordChanged()方法"); 
52. super.onPasswordChanged(context, intent); 
53.     } 
54. @Override 
55. public void onPasswordFailed(Context context, Intent intent) { 
56. "XiaoMaGuo", "调用了onPasswordFailed()方法"); 
57. super.onPasswordFailed(context, intent); 
58.     } 
59. @Override 
60. public void onPasswordSucceeded(Context context, Intent intent) { 
61. "XiaoMaGuo", "调用了onPasswordSucceeded()方法"); 
62. super.onPasswordSucceeded(context, intent); 
63.     } 
64. @Override 
65. public void onReceive(Context context, Intent intent) { 
66. "XiaoMaGuo", "调用了onReceive()方法"); 
67. super.onReceive(context, intent); 
68.     } 
69. @Override 
70. public IBinder peekService(Context myContext, Intent service) { 
71. "XiaoMaGuo", "调用了peekService()方法"); 
72. return super.peekService(myContext, service); 
73.     } 
74.      
75. }


权限文件lockourscreen.xml:

1. <?xml version="1.0" encoding="UTF-8"?> 
2. <device-admin 
3. xmlns:android="http://schemas.android.com/apk/res/android"> 
4. <uses-policies> 
5. <!-- 强行锁定 --> 
6. <force-lock /> 
7.          
8. <!--  因为今天我们只讲下简单的,所以其它的权限,小马先暂时注释掉咯,有兴趣的朋友们可以打开自己试下--> 
9. <!-- 清除所有数据(恢复出厂设置)--> 
10. <wipe-data />  
11. <!-- 重置密码 --> 
12. <reset-password /> 
13. <!-- 限制密码选择--> 
14. <limit-password />  
15. <!-- 监控登录尝试 --> 
16. <watch-login /> 
17.          
18. </uses-policies> 
19. </device-admin>


全局配置文件:

1. <?xml version="1.0" encoding="utf-8"?> 
2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
3. package="com.xiaoma.www" 
4. android:versionCode="1" 
5. android:versionName="1.0" > 
6. <uses-sdk android:minSdkVersion="15" /> 
7.  
8. <application 
9. android:icon="@drawable/ic_launcher" 
10. android:label="@string/app_name" > 
11. <activity 
12. android:name="com.xiaoma.www.DevicePolicyManagerDemoActivity" 
13. android:label="欢迎跟小马一起交流学习" > 
14. <intent-filter> 
15. <action android:name="android.intent.action.MAIN" /> 
16. <category android:name="android.intent.category.LAUNCHER" /> 
17. </intent-filter> 
18. </activity> 
19.          
20. <receiver 
21. android:name=".AdminReceiver" 
22. android:description="@string/description" 
23. android:label="@string/labelValue" 
24. android:permission="android.permission.BIND_DEVICE_ADMIN" 
25. > 
26. <meta-data  
27. android:name="android.app.device_admin" 
28. android:resource="@xml/lockourscreen"/> 
29. <intent-filter> 
30. <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> 
31. </intent-filter> 
32.              
33. </receiver> 
34. </application> 
35.  
36. </manifest>