Android 实现简单的锁屏功能
写正题之前先闲扯几句。因为前段时间自己的手机电源键不灵,所以手机不能及时锁屏,一度让我很苦恼,后来通过在系统设置找到一个另类的方法,设置让音量键锁屏,最终也解决了问题,但是觉得还是不够爽,作为程序员,自己可以完全动手diy一个属于自己的锁屏程序啊 ,灵机一动,就自己查资料做了一个简单的锁屏demo.实现起来倒是不难,但是觉得还是有必要记录一下,如果能帮助到更多的人,何乐而不为呢。转入正题。
首先新建一个项目 项目名随便起了。
接着在主页的布局文件中加入一个按钮,这个按钮就是我们的锁屏按钮了 很简单,代码如下
<Button android:text="锁屏"android:layout_width="match_parent"android:layout_height="wrap_content"android:onClick="lockScreen"/>
接着在MainActivity.java文件中实现上面button的点击时间回调方法lockScreen方法 ,当然目前就是一个空实现 如下,具体逻辑代码一会再补充
public void lockScreen(View view){}
接下来创建一个空的广播接受者AdminManageReceiver.java 如下
import android.app.admin.DeviceAdminReceiver;public class AdminManageReceiver extends DeviceAdminReceiver {}
既然出现了广播 就应该第一时间在Manifest文件中注册,如下
<receiverandroid:name=".AdminManageReceiver"android:label="@string/app_name"android:permission="android.permission.BIND_DEVICE_ADMIN" ><meta-dataandroid:name="android.app.device_admin"android:resource="@xml/device_admin" /><intent-filter><action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /></intent-filter></receiver>
注意这里的注册和别的广播注册有一个小的差别,注意红字部分。这里需要一个资源文件的支持,我们在res目录下面创建名为xml的文件夹,并在xml文件夹下面新建文件device_admin.xml文件。文件内容如下
<device-admin xmlns:android="http://schemas.android.com/apk/res/android"><uses-policies><force-lock /></uses-policies>
</device-admin>
接下来最重要的操作就在MainActivity.java中完成。代码并不多。
MainActivity.java 代码如下
public class MainActivity extends ActionBarActivity {ComponentName mAdminName;DevicePolicyManager mDPM;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mAdminName = new ComponentName(this, AdminManageReceiver.class);mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);//如果设备管理器尚未激活,这里会启动一个激活设备管理器的Intent,具体的表现就是第一次打开程序时,手机会弹出激活设备管理器的提示,激活即可。if (!mDPM.isAdminActive(mAdminName)) {showAdminManagement(mAdminName);}}//执行锁屏public void lockScreen(View view){if (mDPM.isAdminActive(mAdminName)) {mDPM.lockNow();}}//激活设备管理器private void showAdminManagement(ComponentName mAdminName) {Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mAdminName);intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "activity device");startActivityForResult(intent,1);}
}
注意:因为锁屏功能的实现需要激活设备管理器,所以第一次运行程序会出现如下激活设备管理器的界面。点击激活即可
DevicePolicyManager是一个和设备管理相关的类,他提供了很多与设备管理相关的方法,如resetPassword() 设置锁屏密码 wipeData() 恢复出厂设置/擦出手机数据 慎用!!等等,还有很多方法,可以查看文档DevciePolicyManager
注意:如果你想卸载这个锁屏程序,可能会出现卸载失败的情况,此时你只要在系统设置中找到对应的设备管理器程序(设备管理器的控制界面在不同的手机系统中位置是不一样的,在MIUI中可以通过 设置 -> 安全和隐私 -> 设备管理-> 设备管理器找到),然后取消激活这个程序,就可以执行正常的卸载了。
demo源代码 https://github.com/maoruibin/LockScreenDemo
Android 实现简单的锁屏功能相关推荐
- android代码跳过锁屏,直播app源代码,Android系统移除锁屏功能实现
直播app源代码,Android系统移除锁屏功能实现的相关代码 diff --git a/frameworks/base/packages/SettingsProvider/res/values/de ...
- android 11.0 去掉锁屏功能和息屏功能(永不息屏)
1.概述 在11.0产品定制化开发中,有产品需求要求系统去掉锁屏功能,默认永不锁屏,需要对去掉系统默认的锁屏功能和 息屏功能 让屏幕永远不要熄灭, 2.去掉锁屏功能和息屏功能(永不息屏)的核心代码 f ...
- Android开发之实现锁屏功能
锁屏须要引入设备超级管理员.在文档Android开发文档的Administration中有具体的说明. Android设备管理系统功能和控制訪问. 主要有一下几个步骤: 1 创建广播接收者,实现De ...
- Android系统永不熄屏和取消开机锁屏功能
Android系统取消开机锁屏功能和永不熄屏 源码 frameworks/base/packages/SettingsProvider/src/com/android/providers/settin ...
- centos linux怎么关闭锁屏时间,【Centos】Centos7.5取消自动锁屏功能
00. 目录 @ 01. 问题描述 Centos7.5系统在用户闲置一段时间(默认为5分钟)后,会启动屏幕保护程序(默认的屏保为黑屏),并要求重新输入密码才能回到原来桌面.如果是管理员,建议开启自动锁 ...
- android锁屏快捷键设置,【Android高级】锁屏功能简单实现
普通Activity伪造锁屏 文章开头的GIF图片展示的效果, 就是用一个普通Activity做的. 国内的app们, 最终都选择了这条道路, 不知道他们是谁抄的谁, 第一个想到使用普通Activi ...
- Android一键锁屏功能的实现
前不久换了部新手机,因为原来用的手机原装了一键锁屏的应用,用的还习惯,新手机上没有,就想着找一个装上,后来在网上搜了下一键锁屏的实现,自己拿来改了改,安装后感觉还可以.现在分享出来. 源码: 1. M ...
- android 魔力锁屏,锁屏软件横评:锁屏功能PK_Android软件合辑_软件合辑_太平洋电脑网PConline...
三.功能设置 GO锁屏:除了以上两个评测项目设计的设置之外,GO锁屏还可以设置开启锁屏提示音.解锁提示音及解锁震动.在设置中可以设置锁屏开启或关闭. 其他功能设置 魔力锁屏:魔力锁屏可以启用音量键唤醒 ...
- android 9.0 10.0 去掉锁屏功能和息屏功能(永不息屏)
1.概述 在10.0的系统产品定制化开发中,需要对去掉锁屏功能和 息屏功能 让屏幕永远不要熄灭, 在android api中默认息屏时间为1分钟 2.去掉锁屏功能和息屏功能(永不息屏)的核心类 pac ...
最新文章
- IIS 配置Http重定向到Https
- 打破定式,突破屏障,走出自己的创意舒适区
- 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)
- 数据集神经网络共同进步
- Ora_Excel 碉堡了
- Web开发人员有用的代码比较工具
- 计算(a+b)/c的值(信息学奥赛一本通-T1008)
- 实例解读:如何减少Docker中的Java内存消耗
- Dubbo + Zookeeper入门初探(转载)
- 1001系列之案例0001如何从淘宝销售数据集中挖掘有效信息
- CollabNet Subversion Edge 版本库访问规则 svn
- 如何记忆和使用PNP和NPN?
- 基于嵌入式设备的 单目标跟踪算法
- 股票 江恩二十一条买卖法则
- 华为手机通过ADB禁止系统更新和卸载自带软件
- 改编Echarts 日历图
- 三阶魔方还原程序心得
- 全球及中国镱 (Yb) 蒸发材料行业深度研究及未来发展趋势调研报告2021年版
- Postgresql 1小时快速入门
- Flash 与数学:星形线