关闭屏幕
来源:互联网 发布:百度人工智能音乐 编辑:程序博客网 时间:2024/05/04 20:17
最近看到一个关闭屏幕的文章,分享给大家
1.Mainifest.xml文件中声明接收器
<!-- 设备管理 --> <!-- 其中,permission表示此功能所需的权限; android:name="android.app.device_admin"表示这个动作的跳转界面 --> <receiver android:name=".AdminReceiver" android:label="@string/app_name" android:description="@string/app_name" android:permission="android.permission.BIND_DEVICE_ADMIN"> <meta-data android:name="android.app.device_admin" android:resource="@xml/lock"/> <intent-filter> <action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/> </intent-filter> </receiver>
lock.xml文件
<?xml version="1.0" encoding="UTF-8"?><device-admin xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <uses-policies> <!--强制锁屏--> <force-lock/> </uses-policies></device-admin>
2.定义接收器
import android.app.admin.DeviceAdminReceiver;/** * @author:Jack Tony * @tips :这个类的父类是BroadcastReceiver,通过其OnReceive方法可以根据不同的Action执行不同的动作。 * @date :2014-8-10 */public class AdminReceiver extends DeviceAdminReceiver{}
3.Activity编写
import android.app.Activity;import android.app.admin.DevicePolicyManager;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.os.Bundle;public class MainActivity extends Activity {/** * DevicePolicyManager 顾名思义,这个类的作用是管理设备。通过这个类,我们可以实现屏幕锁定、亮度调节甚至是恢复出厂设置等功能。 */private DevicePolicyManager policyManager;private ComponentName componentName;private static final int MY_REQUEST_CODE = 9999;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 获取设备管理服务policyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);// ComponentName这个我们在用intent跳转的时候用到过。// 自己的AdminReceiver 继承自 DeviceAdminReceivercomponentName = new ComponentName(this, AdminReceiver.class);/* * 假如先判断是否有权限,如果没有则调用activeManage(),然后立即锁屏,最后再finish()。 * 这样做是有问题的,因为activeManage()可能还在等待另一个Activity的结果,那么此时依然没有权限却 * 执行了lockNow(),这样就出错了。 处理方法有2个: * 1、是重写OnActivityResult()函数,在里面判断是否获取权限成功,是则锁屏并finish() * 否则继续调用activeManage()获取权限(这样激活后立即锁屏,效果很好) * 2、不重写OnActivityResult()函数,第一次获取权限后不锁屏而立即finish(),这样从理论上说也可能 * 失败,可能权限还没获取好就finish了(这样激活后就回到桌面,还得再按一次锁屏才能锁) 综上推荐第一种方法。 */// 判断是否有锁屏权限,若有则立即锁屏并结束自己,若没有则获取权限if (policyManager.isAdminActive(componentName)) {policyManager.lockNow();// 锁屏finish();} else {activeManage(); //获取权限}//setContentView(R.layout.activity_main); // 把这句放在最后,这样锁屏的时候就不会跳出来(闪一下)}/** * 获取权限 */private void activeManage() {// 启动设备管理(隐式Intent) - 在AndroidManifest.xml中设定相应过滤器Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);// 权限列表intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);// 描述(additional explanation) 在申请权限时出现的提示语句intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"激活后就能一键锁屏了");startActivityForResult(intent, MY_REQUEST_CODE);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// 获取权限成功,立即锁屏并finish自己,否则继续获取权限if (requestCode == MY_REQUEST_CODE && resultCode == Activity.RESULT_OK) {policyManager.lockNow();finish();} else {//activeManage();finish();}super.onActivityResult(requestCode, resultCode, data);}}
0 0
- 关闭屏幕
- 关闭屏幕
- 关闭屏幕保护
- 命令关闭屏幕
- 关闭转换屏幕
- ios取消屏幕关闭
- c++ 关闭屏幕
- imx6dl 关闭屏幕休眠
- WinCE 关闭屏幕、打开屏幕函数
- 【Android】如何调节屏幕亮度,关闭屏幕
- xset 关闭屏幕保护-关闭节电模式
- xset 关闭屏幕保护-关闭节电模式
- LINUX LCD 屏幕关闭问题
- Win7 自制关闭屏幕快捷键
- 确保屏幕不会自动关闭
- 应用层唤醒/关闭屏幕
- linux 设置快捷键关闭屏幕
- mac关闭屏幕的方式
- 简单登录界面
- Struts 2框架整合Spring
- jquery datepicker
- 正则表达式语法,全.
- Ubuntu Server 11.10 安装 MySQL,简单配置,及图形化工具
- 关闭屏幕
- Xcode设置项之Architectures和Valid Architectures
- gpio_request()
- 【Android 应用开发】 Android 相关代码规范 更新中 ...
- Android逆向分析学习与研究(2)————通过“轮盘赌”简要看看smali的基本流程控制
- python os.path模块常用方法详解
- const 、static、extern的用法总结
- 线性表 && 栈和队列
- MySQL中提取数据的API函数mysql_store_result() 和 mysql_use_result() 的区别