写正题之前先闲扯几句。因为前段时间自己的手机电源键不灵,所以手机不能及时锁屏,一度让我很苦恼,后来通过在系统设置找到一个另类的方法,设置让音量键锁屏,最终也解决了问题,但是觉得还是不够爽,作为程序员,自己可以完全动手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 实现简单的锁屏功能相关推荐

  1. android代码跳过锁屏,直播app源代码,Android系统移除锁屏功能实现

    直播app源代码,Android系统移除锁屏功能实现的相关代码 diff --git a/frameworks/base/packages/SettingsProvider/res/values/de ...

  2. android 11.0 去掉锁屏功能和息屏功能(永不息屏)

    1.概述 在11.0产品定制化开发中,有产品需求要求系统去掉锁屏功能,默认永不锁屏,需要对去掉系统默认的锁屏功能和 息屏功能 让屏幕永远不要熄灭, 2.去掉锁屏功能和息屏功能(永不息屏)的核心代码 f ...

  3. Android开发之实现锁屏功能

    锁屏须要引入设备超级管理员.在文档Android开发文档的Administration中有具体的说明. Android设备管理系统功能和控制訪问. 主要有一下几个步骤: 1  创建广播接收者,实现De ...

  4. Android系统永不熄屏和取消开机锁屏功能

    Android系统取消开机锁屏功能和永不熄屏 源码 frameworks/base/packages/SettingsProvider/src/com/android/providers/settin ...

  5. centos linux怎么关闭锁屏时间,【Centos】Centos7.5取消自动锁屏功能

    00. 目录 @ 01. 问题描述 Centos7.5系统在用户闲置一段时间(默认为5分钟)后,会启动屏幕保护程序(默认的屏保为黑屏),并要求重新输入密码才能回到原来桌面.如果是管理员,建议开启自动锁 ...

  6. android锁屏快捷键设置,【Android高级】锁屏功能简单实现

    普通Activity伪造锁屏 文章开头的GIF图片展示的效果, 就是用一个普通Activity做的.  国内的app们, 最终都选择了这条道路, 不知道他们是谁抄的谁, 第一个想到使用普通Activi ...

  7. Android一键锁屏功能的实现

    前不久换了部新手机,因为原来用的手机原装了一键锁屏的应用,用的还习惯,新手机上没有,就想着找一个装上,后来在网上搜了下一键锁屏的实现,自己拿来改了改,安装后感觉还可以.现在分享出来. 源码: 1. M ...

  8. android 魔力锁屏,锁屏软件横评:锁屏功能PK_Android软件合辑_软件合辑_太平洋电脑网PConline...

    三.功能设置 GO锁屏:除了以上两个评测项目设计的设置之外,GO锁屏还可以设置开启锁屏提示音.解锁提示音及解锁震动.在设置中可以设置锁屏开启或关闭. 其他功能设置 魔力锁屏:魔力锁屏可以启用音量键唤醒 ...

  9. android 9.0 10.0 去掉锁屏功能和息屏功能(永不息屏)

    1.概述 在10.0的系统产品定制化开发中,需要对去掉锁屏功能和 息屏功能 让屏幕永远不要熄灭, 在android api中默认息屏时间为1分钟 2.去掉锁屏功能和息屏功能(永不息屏)的核心类 pac ...

最新文章

  1. IIS 配置Http重定向到Https
  2. 打破定式,突破屏障,走出自己的创意舒适区
  3. 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)
  4. 数据集神经网络共同进步
  5. Ora_Excel 碉堡了
  6. Web开发人员有用的代码比较工具
  7. 计算(a+b)/c的值(信息学奥赛一本通-T1008)
  8. 实例解读:如何减少Docker中的Java内存消耗
  9. Dubbo + Zookeeper入门初探(转载)
  10. 1001系列之案例0001如何从淘宝销售数据集中挖掘有效信息
  11. CollabNet Subversion Edge 版本库访问规则 svn
  12. 如何记忆和使用PNP和NPN?
  13. 基于嵌入式设备的 单目标跟踪算法
  14. 股票 江恩二十一条买卖法则
  15. 华为手机通过ADB禁止系统更新和卸载自带软件
  16. 改编Echarts 日历图
  17. 三阶魔方还原程序心得
  18. 全球及中国镱 (Yb) 蒸发材料行业深度研究及未来发展趋势调研报告2021年版
  19. Postgresql 1小时快速入门
  20. Flash 与数学:星形线

热门文章

  1. Linux中的火墙策略
  2. swift 制作动态壁纸(live)实况图
  3. you-get简明使用教程
  4. 录音文件下载_安卓手机噪声检测和录音软件推荐
  5. 儿童python培训班哪家
  6. 孙素丹老师 银行数字化场景营销专家
  7. 集五福1 python
  8. 阿里P5-基础知识2
  9. Java——【案例】Java坦克大战游戏[版本1]能控制移动的GUI界面坦克大战游戏
  10. ssm小型物流信息系统毕业设计源码071146