Android如何打开/关闭系统解锁服务?—典型错误分析

Android厂商CVE漏洞研究实战:从环境搭建到PoC验证全流程解析 CVE(通用漏洞与披露)是信息安全领域用于标识和追踪已知安全缺陷的标准框架,其核心原理在于为每个公开披露的漏洞提供唯一编号与标准化描述,便于全球安全社区协同管理与修复。在移动安全领域,Android系统的开放性使其成为漏洞研究的重点,其中厂商定制化代码引入的CVE漏洞因其直接影响特定品牌设备而具有独特的研究价值。这类漏洞通常涉及系统服务、内核驱动或预装应用等深层组件,研究它们不仅能揭示定制化系统的安全风险,也是深入理解Android安全架构与权限模型的绝佳实践。通过逆向工程与动态分析技术,安全研究人员可以定 阅读详情

最近正在做一个Android的解锁应用,需要屏蔽系统解锁,并在适当的时候打开系统解锁,在网上search了很多有关系统解锁的资料,学到了很多关于系统解锁方面的知识,同时也发现了很多网友犯下的一个共同的错误。现分享一下:

      错误一:

        总所周知,要关闭系统自带的锁屏服务需要用到以下代码:

mKeyguard = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
        mKeylock = mKeyguard.newKeyguardLock("");
        mKeylock.disableKeyguard();

要打开系统锁屏服务需要以下代码:

mKeylock.reenableKeyguard()

网上很多朋友对disableKeyguard()的理解为:将屏幕打开并解锁,只要执行这个方法就会是屏幕变亮并自动解锁!同样reenableKeyguard()的作用是关闭屏幕并上锁!

大错而特错了!

我们来看看google api对这两个方法的解释:

disableKeyguard: Disable the keyguard from showing. If the keyguard is currently showing, hide it. The keyguard will be prevented from showing again untilreenableKeyguard() is called.

reenableKeyguard: Reenable the keyguard. The keyguard will reappear if the previous call todisableKeyguard() caused it it to be hidden. 

所以,disableKeyguard只是关闭系统锁屏服务,调用该方法后并不会立即解锁,而是使之不显示解锁,同样reenableKeyguard是恢复锁屏服务,并不会立即锁屏!

错误二:

           下面是通过两个按钮来模拟打开/关闭系统锁屏的代码:
      
package com.example.keyguard;

import android.os.Bundle;
import android.app.Activity;
import android.app.KeyguardManager;
import android.app.KeyguardManager.KeyguardLock;
import android.content.Context;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.support.v4.app.NavUtils;


public class KeyGuardActivity extends Activity {

	private Button myButtonOn, myButtonOff;
	private KeyguardManager km;
	
	private final String TAG = "KeyGuardTest";
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_key_guard);
        
        /* 获取KeyGuardManager对象 */
        km = (KeyguardManager)this.getApplicationContext().getSystemService(Context.KEYGUARD_SERVICE);     
        
        myButtonOff = (Button)findViewById(R.id.buttonOff);
        myButtonOff.setOnClickListener(new Button.OnClickListener(){
			public void onClick(View arg0) {
				/* 关闭系统锁屏服务 */	
                km.newKeyguardLock(TAG).disableKeyguard();   
			} }); 
        myButtonOn = (Button)findViewById(R.id.buttonOn); 
        myButtonOn.setOnClickListener(new Button.OnClickListener(){public void onClick(View arg0) {
        		/* 打开系统锁屏服务 */
				km.newKeyguardLock(TAG).reenableKeyguard();   
        } 
        }); 
    }
  }



这段代码看起来很完美,但是执行之后会发现:只能关闭锁屏服务,无法恢复锁屏服务!
是什么原因呢?
原来是在调用disableKeyguard和reenableKeyguard的时候必须使用同一个KeyguardLock对象!
程序略加修改:
package com.example.keyguard;

import android.os.Bundle;
import android.app.Activity;
import android.app.KeyguardManager;
import android.app.KeyguardManager.KeyguardLock;
import android.content.Context;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.support.v4.app.NavUtils;

/**
 * @author Onejune
 * @function 打开/关闭系统锁屏服务测试
 * @note 在打开/关闭系统锁屏服务时必须使用同一个KeyguardLock对象,否则出错
 */
public class KeyGuardActivity extends Activity {

	private Button myButtonOn, myButtonOff;
	private KeyguardManager km;
	private KeyguardLock kl;
	
	private final String TAG = "KeyGuardTest";
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_key_guard);
        
        /* 获取KeyGuardManager对象 */
        km = (KeyguardManager)this.getApplicationContext().getSystemService(Context.KEYGUARD_SERVICE);     

        /* 获取KeyguardLock对象 */
        kl = km.newKeyguardLock(TAG);
        
        myButtonOff = (Button)findViewById(R.id.buttonOff);
        myButtonOff.setOnClickListener(new Button.OnClickListener(){
			public void onClick(View arg0) {
				/* 关闭系统锁屏服务 */
				kl.disableKeyguard();   
			}
        });
        
        myButtonOn = (Button)findViewById(R.id.buttonOn);
        myButtonOn.setOnClickListener(new Button.OnClickListener(){
			public void onClick(View arg0) {
				/* 打开系统锁屏服务 */
				kl.reenableKeyguard();   
			}
        });
    }
}

 终于OK!

    
小米手机跨版本降级实战:Fastboot驱动与MiFlash识别故障全解析 Fastboot是安卓设备底层的刷机协议接口,它允许在Bootloader模式下通过电脑直接写入系统镜像,是实现系统深度定制和修复的核心技术。其原理在于绕过系统高层的分区验证与防回滚机制,直接对设备存储分区进行读写操作,这对于解决系统卡顿、耗电异常等性能问题以及进行跨版本系统升降级具有关键价值。在安卓设备维护、老旧机型优化和系统故障修复等场景中,Fastboot模式与MiFlash工具的组合是常用技术手段。然而,实际操作中常因USB驱动冲突、环境变量配置或工具版本问题,导致设备在Fastboot模式下连接失 阅读详情

相关推荐

小天才Z11 ROOT指南:从原理到风险的全流程解析

在Android生态中,ROOT是指获取系统最高权限的过程,本质是突破Linux用户权限限制,实现对系统文件、应用数据和底层硬件的完全控制。儿童电话手表作为深度定制的穿戴设备,其Bootloader锁定、系统签名校验和家长管控机制,使得ROOT操作比普通手机复杂得多。掌握解锁Bootloader、修补boot镜像、使用ADB工具等基本原理,不仅是系统定制的技术基础,也能帮助开发者或家长理解智能硬件的安全边界。随着儿童手表功能日益丰富,ROOT的价值体现在去除应用安装限制、优化系统续航以及学习底层工程实践等场

weixin_31887307的博客 359

锁屏解锁-KeyguardManager

判断是否锁屏 KM.isKeyguardLocked() 是否锁屏。不管有没有设置密码 KM.isDeviceLocked() 手机锁屏,且需要密码才能解锁 KM.isKeyguardSecure() 如果锁屏,需要密码(比isDeviceSecure 多了个sim锁)才能解锁。此时也可以没锁屏 KM.isDeviceSecure() 如果锁屏,需要密码才能解锁。此时可以没锁屏。 解锁 KeyguardManager.KeyguardLock.disableKeyguard() 描述: KeygaurdLo

weixin_38854248的博客 5189

GPT-4o全模态交互实战指南:语音/视觉/实时协同工作流

多模态大模型正从‘文本为中心’转向‘感知即计算’的新范式,其核心是语音、图像与文本在统一神经空间中的联合表征与实时对齐。GPT-4o通过端到端音频编码、跨模态视觉理解与流式生成架构,实现了320毫秒级神经同步响应,突破传统ASR+LLM分段处理瓶颈。该技术显著提升会议纪要重构、手写批注识别、多语言商品图解析等场景的准确率与上下文连贯性,尤其适用于教育个性化诊断、工业缺陷检测、视障环境描述等强实时性与高语义耦合需求领域。本文聚焦GPT-4o新功能落地路径,提供零门槛激活、避坑设置与行业定制化工作流。

Envisage123 394

Android应用代码点亮屏幕并解锁

android 唤醒和解锁屏幕

Jason_Lee155的博客 4488

Burp Suite入门实战:从零配置到抓包修改,掌握Web安全测试核心工具

在Web安全测试领域,代理工具是理解应用交互、分析潜在风险的基础设施。其核心原理是通过中间人代理,实现对HTTP/HTTPS流量的拦截、分析与修改,从而让安全人员能够深入观察应用前后端的数据交换过程。这项技术的价值在于,它能够将抽象的网络通信可视化、可操作化,是发现注入、越权、信息泄露等漏洞的关键前置步骤。无论是进行渗透测试、漏洞挖掘还是安全审计,熟练使用代理工具都是从业者的必备技能。本文以Burp Suite这一集成化测试平台为例,详细讲解其安装配置、代理设置、证书安装及核心模块的使用,并通过实战演示如何

anmishi2025的博客 344

Wink窗口管理器2026保姆级安装与工作流配置指南

Wink是一款基于Rust开发的轻量级系统级窗口管理工具,核心原理是监听Windows/macOS底层窗口事件(如创建、焦点切换、尺寸变化),通过声明式JSON规则实现精准的窗口吸附、布局固化与快捷键调度。其技术价值在于零依赖、静态编译、MIT开源协议带来的高稳定性与强可验证性,规避了商业软件常见的兼容性雷区和捆绑风险。典型应用场景包括程序员多IDE协同(VS Code+Codex)、设计师多屏任务分组、数据分析师多文档并行处理,以及家庭用户桌面秩序重建。本文聚焦于从GitHub官方源安全获取、签名哈希双重

weixin_30411239的博客 372

跟我一起学“网络安全”通识-Linux

本篇文章是《跟我一起学“网络安全”通识》的第三章,介绍了Linux操作系统里的一系列基础知识,包括:Linux常用Shell命令、Linux文件和目录操作、Linux磁盘管理、Linux安装Nginx、docker等。

Cool_foolisher的博客 1143

KimiClaw本地AI助手安装与实战指南:零代码接入Kimi大模型

本地AI助手是指将大语言模型能力深度集成到操作系统层面的轻量级代理工具,其核心原理是通过前端界面+原生后端协同,实现全局快捷键、剪贴板监听、跨应用文本捕获等系统级交互。技术价值在于消除‘窗口切换’和‘手动粘贴’带来的注意力断点,显著降低非技术人员使用大模型的交互成本。典型应用场景包括办公文档润色、会议纪要提炼、法律条款通俗化、电商文案批量生成等高频文字处理任务。本文以KimiClaw为例,详解如何在Windows/macOS上完成免代码部署、扫码登录、快捷键绑定及真实办公场景调用,覆盖从环境校验到故障排查的

weixin_30855761的博客 402

android去掉默认的锁屏界面和屏幕超时锁屏

android去掉默认的锁屏界面和屏幕超时锁屏

zsyf33078的专栏 1万+

android 11.0 SystemUI禁用锁屏功能

在11.0平板开发中,客户不需要锁屏,每次开机锁屏显得麻烦,所以需要禁用锁屏功能 而锁屏功能都是在SystemUI中处理的 解决方案 就是在SystemUI里面禁止开启锁屏功能 步骤1: KeyguardManager.KeyguardLock 关闭锁屏服务 如下: SystemUI的SystemUIApplication里面添加关闭锁屏服务; @Override public void onCreate() { super.onCreate();

安卓兼职framework和app工程师的博客 1443

Framework定制系列(四)-----Android系统关闭锁屏service出现的FallbackHome问题解决方案

Android系统关闭锁屏service出现的FallbackHome问题解决方案

—莫言— 1789

Rexsee API介绍:Android屏幕锁定,Keyguard函数与扩展源码

Android锁屏时会先调用onPause();解锁时调用onResume,读入保存的应用程序的资源。如果运行程序时已经锁屏,应用程序会先调用onCreate(),然后onResume(),再则onPause()。 取消锁屏: KeyguardManager mKeyGuardManager = (KeyguardManager)getSystemService(KEYGUARD_S

rexsee_dev的专栏 580

SAP MTS计划策略40实战:如何配置‘带最终组装的计划‘提升定制化生产效率

本文深入解析SAP计划策略40(带最终组装的计划)的核心机制与实战配置。该策略通过“需求消耗”与“组装灵活性”,有效融合按库存生产(MTS)与按订单生产(MTO)的优势,帮助制造企业在保持通用组件库存稳定的同时,快速响应客户的定制化需求,从而提升生产效率与客户满意度。

ruby5的博客 967

屏幕保护(Keyguard)管理Activity生命周期

屏幕保护(Keyguard)管理Activity生命周期 在锁屏时开发自定义SystemUI的锁屏时,会出现无法使底部Activity不在解锁时再走OnStart和OnResume方法,此时可以使用下面的方法,第一个showing参数传为true或者false即可,亲测有效,可以用于独立开发的锁屏界面,用于优化内存占用。 /** * Informs ActivityTaskManagerService that the keyguard is showing. * * @param showingKe

sini8794的博客 1900

硬件原理图:从软件思维到硬件接口的嵌入式开发破局指南

本文为软件开发者提供了读懂硬件原理图的嵌入式开发破局指南。文章将硬件原理图类比为“硬件系统的架构图”,引导读者将软件API调用思维迁移到硬件接口理解上,详细解析了电阻、电容、二极管等常见元器件的“硬件API”功能与选型逻辑,并通过实战电路拆解,阐述了从原理图分析到驱动代码编写的完整思维链条,帮助开发者建立软硬件协同的系统级视角。

lg888的博客 496

AGV路径规划实战:如何用Python+ROS实现激光SLAM导航(附避障代码)

本文提供了一份基于Python和ROS实现AGV激光SLAM导航的实战指南。内容涵盖从Docker环境搭建、激光雷达数据处理、Gmapping建图,到Move_Base全局/局部路径规划与TEB局部规划器配置的全流程。重点解析了如何通过参数调优实现稳定导航,并附带了紧急避障代码,帮助开发者快速构建具备自主路径规划与实时避障能力的AGV系统。

pepsi的博客 1234

android keyguard代码,KeyguardManager简介

android.app.KeyguardManager类用于对Keyguard进行管理,即对锁屏进行管理。详细信息参考:下面的代码用来设定键盘锁和解锁//声明键盘管理器并获取键盘的服务KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);//声明键盘锁并初始化键盘锁...

weixin_39638309的博客 510

【GameFramework框架】一、框架介绍

这是GameFramework框架教程的第一篇,但是博主不准备直接就讲GameFramework框架。【GameFramework框架】二、GameFramework框架介绍了。框架(Framework)通常被理解为一种基础要素的集合,它们用于承载系统的必要功能。约束性:框架定义了解决特定问题的边界,并将相关的软件组件约束在这个范围内,以保持框架的内聚性和解决问题的专注性。支撑性:框架本身不直接解决问题,而是提供一个基础的支撑结构,使得在其上构建的解决方案更为灵活和高效。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 1万+

Android源码去除锁屏及应用程序开机自动运行不锁屏全屏显示

针对RealV210提供的源码 android_gingerbread_realv210_ver_1_2 2.3.1 设置默认锁屏时间 frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java private void loadSystem...

xiangxingchina 323

Exploring Automated Distractor Generation for Math Multiple-choice Questions via Large Language Mode

多项选择题(MCQ)在几乎所有级别的教育中都无处不在,因为它们易于管理、评分,并且是评估和实践中可靠的格式。MCQ最重要的方面之一是干扰因素,即旨在针对真实学生常见错误或误解的不正确选项。迄今为止,对于教师和学习内容设计师来说,制作高质量的干扰物的任务在很大程度上仍然是一个劳动和时间密集型的过程,其可扩展性有限。在这项工作中,我们研究了数学MCQ领域的自动干扰物生成任务,并探索了从上下文学习到微调的各种基于大型语言模型(LLM)的方法。

c_cpp_csharp的专栏 317

家人们,谁懂啊,dify又报错了:[models] Bad Request Error, 500 Server Error:Internal Server Error for url: http://

本来今天下班,坐在地铁上,一身劳累。一起上班的小兄弟儿,突然甩来一张截图:老大!dify又报错了。没办法,一到家就打开电脑,开始排查。

xiezhipu的博客 882

移除锁屏功能

从Android设置界面移除锁屏功能,并默认不锁屏;(但仍能通过第三方软件开启锁屏功能) 1] $ vi ./frameworks/base/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java 修改点1: ---     private boolean mExternallyE

TK_ZHENG的博客 1455

软件崩溃时Visual Studio中看不到有效的调用堆栈,使用Windbg动态调试去分析定位

当在Visual Studio中遇到软件崩溃且无法查看详细调用堆栈时,可以使用Windbg进行动态调试去分析定位问题。

dvlinker的技术专栏 1万+

android 屏幕设置相关

锁屏设置: 1. 初始值 : 60000 2. 数据库/data/data/com.android.providers.settings/databases/settings.db中         system 表 screen_off_timeout. 3. 开机锁屏, 在frameworks/policies/base/phone/com/android/internal/polic

joans123的专栏 1万+

WinCC 7.5 读取 SQL server2016 中的表格数据

环境 win10 SQL Server 2016 WinCC V7.5 SP2 1 安装SQL Server 2016 2 选择服务器名称 .\WINCC 3 建数据库

skr? 7140

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: C#解决MDI窗体闪屏的方法
下一篇: Android4.0源码编译方法以及错误解决方案
然鸟
博客等级 码龄18年 86粉丝 58原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值