当前位置: 首页 > news >正文

android10 系统定制:增加应用锁功能

实现效果如下,上锁应用在桌面或最近任务打开弹出解锁界面,需要解锁成功才能打开应用。解锁界面可点击返回或Home键关闭,非上锁应用可直接打开。
在这里插入图片描述

基本思路:拦截系统应用启动,判断应用是否在锁住状态,弹出解锁Window。解锁完成后再正常启动应用。分为从桌面启动和最近任务启动两种情况。
1.资源的添加
在这里插入图片描述
在frameworks/base/core/res下增加了我的资源目录jia_res,添加了解锁界面用到的资源文件,文件目录如图。
需要在frameworks/base/core/res/Android.bp中添加引用:

android_app {...resource_dirs: ["res","jia_res"],...
}

另外新增的资源需要在symbols.xml或pubulic.xml声明,例如:

<resources><java-symbol type="layout" name="window_unmber_unlock_app" /><java-symbol type="id" name="appNumberLogoImg" /><java-symbol type="id" name="appNumberNameText" /><java-symbol type="id" name="subTitleNumber" /><java-symbol type="id" name="pswNumberPointView" /><java-symbol type="id" name="errorNumberTipsText" /><java-symbol type="id" name="numberKeyView" /><java-symbol type="string" name="lock_app_number_subtitle" /><java-symbol type="string" name="lock_app_number_error_tip" /><java-symbol type="drawable" name="ic_lock_delete" /><java-symbol type="drawable" name="selector_keyboard_number" />...
</resources>

2.拦截从桌面启动
之前分析过Activity启动流程 ,无论冷启动还是热启动都会先走ActivityStarter的startActivityMayWait方法,因此在此方法进行拦截:

private int startActivityMayWait( ...){...// Collect information about the target of the Intent.ActivityInfo aInfo = mSupervisor.resolveActivity(intent, rInfo, startFlags, profilerInfo);if (AppLockManager.isAppLocked(aInfo.packageName)) {IApplicationThread caller1 = caller;int callingUid1 = callingUid;Intent intent1 = intent;String resolvedType1 = resolvedType;AppLockManager.ShowLockWindow(mService.mContext,aInfo.packageName, new Runnable() {@Overridepublic void run() {startActivityMayWait(caller1, callingUid1,callingPackage, requestRealCallingPid, requestRealCallingUid,intent1, resolvedType1, voiceSession,voiceInteractor, resultTo, resultWho, requestCode,startFlags, profilerInfo, outResult,globalConfig, options, ignoreTargetSecurity,userId, inTask, reason,

相关文章:

android10 系统定制:增加应用锁功能

实现效果如下,上锁应用在桌面或最近任务打开弹出解锁界面,需要解锁成功才能打开应用。解锁界面可点击返回或Home键关闭,非上锁应用可直接打开。 基本思路:拦截系统应用启动,判断应用是否在锁住状态,弹出解锁Window。解锁完成后再正常启动应用。分为从桌面启动和最近任务…...

数据结构----队列

一、队列 1&#xff09;队列定义 队列(Queue)是只允许在一端进行插入操作&#xff0c;而在另一端进行删除操作的线性表。 允许插入的端是队尾&#xff0c;允许删除的端是队头。队列是一个先进先出(FIFO)的线性表&#xff0c;相应 的也有顺序存储和链式存储两种方式。 2&#…...

【python】实现对文件夹中的图像连续重命名方法

import os import shutildef rename_images(input_folder):# 获取输入文件夹下的所有图片文件&#xff08;假设都是.jpg格式&#xff09;image_files [f for f in os.listdir(input_folder) if os.path.isfile(os.path.join(input_folder, f)) and f.endswith(".jpg"…...

【nginx 第一篇章】认识一下 NGINX 服务器

一、简介 Nginx (engine x) 是一个高性能的 HTTP 和反向代理服务器&#xff0c;也是一个 IMAP/POP3/SMTP 代理服务器。由俄罗斯程序员 Igor Sysoev 开发&#xff0c;并在2004年首次公开发布。Nginx 以其高并发处理能力、低内存消耗、稳定性、丰富的功能集、简单的配置以及低学…...

【物联网】(防水篇)哪些电子产品需要通过 IPX7 防水级别测试?

哪些电子产品需要通过 IPX7 防水级别测试&#xff1f; 举例一些可能需要通过 IPX7 防水级别测试的产品 - 电子产品&#xff1a;如智能手机、平板电脑、智能手表、运动手环等&#xff0c;以满足用户在不同场景下的使用需求&#xff0c;例如在潮湿环境或意外沾水时仍能正常工作。…...

高级java每日一道面试题-2024年8月09日-网络篇-什么是XSS攻击如何避免?

如果有遗漏,评论区告诉我进行补充 面试官: 什么是XSS攻击如何避免? 我回答: XSS&#xff08;Cross-Site Scripting&#xff0c;跨站脚本攻击&#xff09;是一种常见的Web应用程序安全漏洞&#xff0c;攻击者通过在网页中注入恶意脚本&#xff0c;当其他用户浏览这些网页时&…...

Linux时间管理:命令与脚本的完美结合

目录 前言 Linux时间管理命令 date命令 cron定时任务 at命令 sleep命令 脚本与时间命令的结合使用 备份脚本示例 设置cron任务 监控脚本执行时间 结论 致谢 前言 在Linux系统中&#xff0c;时间管理是一项基础而关键的任务。无论是安排周期性的备份、监控任务的执…...

基于ssm+vue+uniapp的微信外卖小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…...

lvs(linux virtual server)实例

一.lvs概述 1.1什么是lvs LVS&#xff08;Linux Virtual Server&#xff09;是一个基于Linux操作系统的虚拟服务器技术&#xff0c;用于实现负载均衡和高可用性。LVS通过将客户端的请求分发到多台后端服务器上&#xff0c;从而提高整体服务的处理能力和可靠性。LVS主要有两个组…...

Unity游戏开发

Unity游戏开发 系列文章的目录&#xff1a; 第一章&#xff1a;Hello&#xff0c;Unity&#xff01; “好读书&#xff0c;不求甚解&#xff1b;每有会意&#xff0c;便欣然忘食。” 本文目录&#xff1a; Unity游戏开发 Unity游戏开发前言今天我们来体验一下unity开发创建第一…...

5. MQTT消息类型详解(三)

9 SUBACK消息 9.1 消息结构 SUBACK消息是订阅确认消息&#xff0c;格式如下&#xff1a; ------------------------------- | 消息类型&#xff08;1字节&#xff09; | ------------------------------- | 保留标志&#xff08;1字节&#xff09; …...

TypeScript JSX

介绍 在线的免费的代码转换器工具&#xff1a;可以把HTML 代码移植到 JSX 语法。还支持很多其他的转换。 JSX 是 ECMAScript 的一种类似 XML 的语法扩展&#xff0c;没有任何定义的语义。它不打算由引擎或浏览器实现。它并不是将 JSX 纳入 ECMAScript 规范本身的提议。它旨在供…...

java里的序列化反序列化、HttpMessageConverter、Jackson、消息转化器、对象转化器...都是啥?

前段时间在学习SSM框架&#xff08;spring boot、spring MVC、mybatis&#xff09;后端项目的时候&#xff0c;发现他们的项目里&#xff1a;响应类Result类要实现Serializable接口、转化响应给前端的时间数据的格式要用到什么“消息转换器”MappingJackson2HttpMwssageConvert…...

GNU/Linux - memtool使用

在Yocto中为NXP的i.MX系列芯片构建Linux系统时&#xff0c;可以加入一些实用工具&#xff0c;比如直接操作内存的memtool。 这些工具在imx-test包中&#xff0c;比如imx-test_git.bb里。 比如在imx-image-core.bb中&#xff0c;IMAGE_INSTALL "imx-test" &#xff0…...

Qt5.12.8源码交叉编译带openssl版本

一.背景 近期项目由于对接方的Qt版本是Qt5.12.8&#xff0c;后台服务是https的&#xff0c;之前用的Qt5.15.10要切换成Qt5.12.8&#xff0c;并且为了能支持https&#xff0c;必须要重新编译Qt。 二.环境 环境准备&#xff1a; Ubuntu版本 &#xff1a;18.04&#xff1b; openss…...

串行并行数据转换

前言 串行数据传输通常在数据传输距离较远时使用&#xff0c;而并行数据传输适用于短距离、高速数据交换。通过转换&#xff0c;可以根据实际需求选择合适的传输方式&#xff0c;以优化数据传输效率和速度。串行数据传输在长距离传输中可以减少信号的干扰和失真&#xff0c;因为…...

推荐一个优秀的 .NET MAUI 组件库

目录 前言 组件介绍 组件展示 布局 按钮 复选框 进度条 导航栏 组件地址 最后 前言 .NET MAUI 的发布&#xff0c;项目中可以使用这个新的跨平台 UI 框架来轻松搭建的移动和桌面应用。 为了帮助大家更快地构建美观且功能丰富的应用&#xff0c;本文将推荐一款优秀…...

用Manim创建条形图【BarChart】

BarChart是Manim库中用于创建条形图的函数。它允许用户通过一组值创建一个条形图&#xff0c;其参数可以调整条形的外观和布局。 BarChart(values, bar_namesNone, y_rangeNone, x_lengthNone, y_lengthNone, bar_colors[#003f5c, #58508d, #bc5090, #ff6361, #ffa600],bar_w…...

iMES工厂管家:强大的工厂管理系统

iMES工厂管家&#xff1a;强大的工厂管理系统 在现代工厂管理中&#xff0c;iMES工厂管家作为一款功能强大的MES系统&#xff0c;为用户提供了全面的管理解决方案。本文将介绍iMES工厂管家的基本信息、特点、以及如何快速部署和使用。 软件简介 iMES工厂管家是一款基于.NetCor…...

iOS ------ 事件响应链

响应者链 响应者链是由一系列链接在一起的响应者&#xff08;UIResponser之类&#xff1a;UIApplication&#xff0c;UIViewController&#xff0c;UIView&#xff09;注组成的。一般情况下&#xff0c;一条响应链开始于第一响应者&#xff0c;结束于application对象。如果一个…...

LeetCode 热题100——49.字母异位词分组

题目&#xff1a;给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。示例 1:输入: strs ["eat", "tea", "tan", "ate", "nat", "bat"]输出: [["bat"],["…...

mtkclient-gui技术指南:联发科设备深度控制与系统修复实战

mtkclient-gui技术指南&#xff1a;联发科设备深度控制与系统修复实战 【免费下载链接】mtkclient-gui GUI tool for unlocking bootloader and bypassing authorization on Mediatek devices (Not maintained anymore) 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclie…...

别再死记硬背了!用‘减法’和‘host/any’关键字,5分钟搞定思科ACL通配符掩码配置

思科ACL通配符掩码&#xff1a;5分钟掌握减法计算与host/any实战技巧 刚接触思科ACL配置时&#xff0c;通配符掩码总是让人头疼。那些0和1的组合看似简单&#xff0c;实际配置时却容易出错。但你可能不知道&#xff0c;掌握两个核心技巧就能彻底解决这个问题——用255.255.255.…...

如何为《以撒的结合:悔改》安装REPENTOGON扩展框架

如何为《以撒的结合&#xff1a;悔改》安装REPENTOGON扩展框架 【免费下载链接】REPENTOGON Script extender for The Binding of Isaac: Repentance 项目地址: https://gitcode.com/gh_mirrors/re/REPENTOGON REPENTOGON是一款针对《以撒的结合&#xff1a;悔改》的扩展…...

“证死你,证伟我”——波普尔“证伪主义”是逻辑诈骗,1+1=2才是真正的科学

“证死你&#xff0c;证伟我”——波普尔“证伪主义”是逻辑诈骗&#xff0c;112才是真正的科学摘要本文作者以技术专家立场&#xff0c;将波普尔证伪主义定性为“逻辑原罪”与“学术诈骗”。核心指控为六个字&#xff1a;“证死你”——用“不可证伪”剥夺完美理论&#xff08…...

RVC变声器全场景解决方案:6大核心问题的系统解决策略

RVC变声器全场景解决方案&#xff1a;6大核心问题的系统解决策略 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversi…...

深入探索Verilog-mode的AUTO功能:提升Verilog/SystemVerilog编码效率

1. Verilog-mode与AUTO功能初探 如果你经常用Verilog或SystemVerilog做数字设计&#xff0c;肯定遇到过这些烦恼&#xff1a;手动实例化模块时要反复核对端口列表、修改信号名后得同步更新十几处连线、敏感信号列表漏写导致仿真异常...这些问题在大型项目中尤为明显。而Emacs的…...

Fedora 40 虚拟机避坑指南:VMware 17.5 安装与内核降级实战(解决卡顿与兼容性问题)

Fedora 40 虚拟机性能优化全攻略&#xff1a;从内核调优到图形加速的深度实践 当你在VMware Workstation 17.5上运行Fedora 40时&#xff0c;是否遇到过系统卡顿、响应迟缓的问题&#xff1f;这并非个例——最新Linux发行版与虚拟化平台间的兼容性挑战&#xff0c;往往让开发者…...

从WPF迁移到Avalonia:开发者必须掌握的12个关键差异与实战转换指南

1. 文件格式与样式系统的根本差异 如果你是从WPF转向Avalonia的老手&#xff0c;第一个迎面而来的变化就是文件扩展名。在WPF中我们熟悉的.xaml文件&#xff0c;在Avalonia中变成了.axaml。这个小小的"a"前缀背后&#xff0c;其实隐藏着框架设计理念的重大转变。我刚…...

提升 10 倍的学习效率,这款浏览器必装的AI插件为什么火了?

花了3 周时间写了一个浏览器插件&#xff0c;一个月陆陆续续下载量破 1000 啦 安装链接 为什么要做这个项目&#xff1f; 一开始我入门学习 langchain 大模型agent开发&#xff0c;在之前我不懂的问题需要在 google 上搜索非常多的资料 融会贯通以后才能得到答案&#xff0…...