“让App玩捉迷藏:Android教育平板的‘隐身术’开发实录”

1. 前言:一场App的“消失魔术”
在定制教育平板时,客户要求:“朕要某些App在桌面上消失,只能在系统设置里当个‘幽灵’,而朕一声令下,它们又得原地复活!”于是,程序员们翻开了Android的《魔法宝典》——PackageManager,准备施展“应用隐身术”。


2. 技术揭秘:PackageManager的“魔杖咒语”
“魔杖”真身:
PackageManager(PM)是Android的“应用大管家”,手握生杀大权:安装、卸载、查询权限,甚至能让App“人间蒸发”。

核心咒语:

  • “统统消失!”
    pm.setApplicationEnabledSetting(包名, COMPONENT_ENABLED_STATE_DISABLED, 0);
    App瞬间从桌面消失,连adb shell am start都喊不动它!

  • “给我现身!”
    pm.setApplicationEnabledSetting(包名, COMPONENT_ENABLED_STATE_ENABLED, 0);
    App秒变乖孩子,桌面图标满血复活!

代码の冷笑话:
PM内心OS:“禁用App?不就是把它的ApplicationInfo里的enabled标成false嘛,比把大象装冰箱还简单!”


3. 实战翻车现场:Bug们的狂欢
案例代码:

java

复制

// 当禁止列表为空时,竟把之前禁用的App再禁一遍?程序员:我杀我自己?
if (packageNames == null || packageNames.isEmpty()) {String oldList = Settings.System.getString("DisallowedRunningApp");for (String pkg : oldList.split(",")) {pm.setApplicationEnabledSetting(pkg, COMPONENT_ENABLED_STATE_DISABLED, 0); // 禁止→禁止→禁止禁止套娃!}Settings.System.putString("DisallowedRunningApp", ""); // 清空名单,假装无事发生
}

程序员调试日记:

  • Day1: “为什么点了‘允许所有’后,App消失得更彻底了?”

  • Day2: “PM愤怒地抛出了SecurityException——原来我忘了申请CHANGE_COMPONENT_ENABLED_STATE权限!”

  • Day3: “用户反馈:禁用‘计算器’后,系统设置里的‘存储’选项闪退了…(因为系统设置偷偷调用了计算器?黑人问号.jpg)”


4. 终极优化:让Bug无处遁形
修复逻辑の奥义:

  • “允许所有”的正确姿势: 先遍历旧名单启用App,再清空名单,拒绝套娃!

  • 权限要到位: 在AndroidManifest.xml里大喊一声:<uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" />

  • 防御式编程: 包名不存在?try-catch护体!多用户环境?userId传参安排!

最终代码の高光时刻:

java

复制

// 当允许所有App时:先捞旧名单,挨个解封,再清空名单!
if (packageNames.isEmpty()) {String oldList = Settings.System.getString("DisallowedRunningApp");for (String pkg : oldList.split(",")) {pm.setApplicationEnabledSetting(pkg, COMPONENT_ENABLED_STATE_ENABLED, 0); // 这才是“解封咒语”!}Settings.System.putString("DisallowedRunningApp", ""); // 名单清零,深藏功与名
}

5. 结语:App管理の哲学
PackageManager的魔法虽强,但切记:
“能力越大,责任越大!”
——别让系统设置里的App列表,变成“阿兹卡班监狱”的名单!

转载请注明出处“让App玩捉迷藏:Android教育平板的‘隐身术’开发实录”-CSDN博客,谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/20637.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码解读:如何将HunYuan T2V模型训练成I2V模型?

Diffusion models代码解读:入门与实战 前言:HunYuan T2V模型出来很久了,但是想要训练成I2V的模型还是有点难度。此外,还有很多预训练视频模型都是T2V的,可以借鉴本文的方法加入参考图作为条件,并严格保持视频的第一帧与Image一样。 目录 Patch Image Padding Channel …

windows事件倒计时器与提醒组件

widgets 这是桌面组件前端开源组件&#xff0c;作者称&#xff1a;项目还在持续完善中&#xff0c;目前包含键盘演示、抖音热榜、喝水提醒、生日列表、待办事项、倒计时、灵动通知、打工进度等多个组件 有vue编程能力的可以自己做组件 百度网盘 夸克网盘 桌面组件 | Ca…

汽车零部件工厂如何通过工业一体机实现精准控制

在汽车制造行业中&#xff0c;零部件的精度和质量直接关系到整车的性能与安全。随着汽车工业的快速发展&#xff0c;汽车零部件工厂对生产过程的精准控制提出了更高的要求。传统的生产管理模式往往依赖人工操作和分散的系统&#xff0c;难以满足现代汽车零部件工厂的需求。而工…

BMS保护板测试仪:电池安全与性能的坚实守护者

在新能源汽车、储能系统、电动工具等电池驱动型产品日益普及的今天&#xff0c;电池的安全性和性能成为了人们关注的焦点。而BMS保护板测试仪作为电池管理系统&#xff08;BMS&#xff09;中不可或缺的一部分&#xff0c;为电池的安全运行提供了有力保障。 BMS保护板测试仪的重…

Django的初步使用

1.安装Django pip install django 验证是否安装成功&#xff1a; $ python3 Python 3.8.10 (default, Jan 17 2025, 14:40:23) [GCC 9.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >…

(前端基础)CSS(一)

了解 Cascading Style Sheet&#xff1a;层叠级联样式表 CSS&#xff1a;表现层&#xff08;美化网页&#xff09;如&#xff1a;字体、颜色、边框、高度、宽度、背景图片、网页定位、网页浮动 css优势&#xff1a; 内容和表现分离网页结构表现统一&#xff0c;可以实现复用…

CASAIM与韩国DOOSAN集团达成合作,开启工业制造自动化检测新篇

近日&#xff0c;CASAIM与韩国知名跨国企业斗山集团&#xff08;DOOSAN&#xff09;达成战略合作&#xff0c;联合打造CASAIM全自动化智能检测系统&#xff0c;助力斗山集团全面提升产品质量检测精度与效率&#xff0c;完成智能化检测升级&#xff0c;保持在全球市场竞争中的领…

矛盾(WEB)

##解题思路 打开靶场就是一段自相矛盾的代码&#xff0c;既要num是数字类型&#xff0c;又要判断为1 这种情况我们会想到弱类型的编程语言&#xff0c;插件查看过后&#xff0c;php就是弱类型的语言&#xff0c;此处并非是严格相等&#xff0c;只是 因此可以根据弱类型编程语言…

[AI]docker封装包含cuda cudnn的paddlepaddle PaddleOCR

封装,启动时需要在GPU服务器上 显卡驱动 cuda等下载需要注册账号 环境Ubuntu 24.04 LTS镜像uvicorn-gunicorn-fastapi:python3.8显卡支持版本CUDA Version: 12.5cuda版本cuda_12.4.0_550.54.14_linux.runcudnn版本PaddlePaddle-GpuPaddleOCR 启动进入容器 docker run --gpus …

idea连接gitee(使用idea远程兼容gitee)

文章目录 先登录你的gitee拿到你的邮箱找到idea的设置选择密码方式登录填写你的邮箱和密码登录成功 先登录你的gitee拿到你的邮箱 具体位置在gitee–>设置–>邮箱管理 找到idea的设置 选择密码方式登录 填写你的邮箱和密码 登录成功

VisionTransformer(ViT)与CNN卷积神经网络的对比

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

Java并发编程面试题:锁(17题)

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

Jeesite5:Star24k,Spring Boot 3.3+Vue3实战开源项目,架构深度拆解!让企业级项目开发效率提升300的秘密武器

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 企业级应用开发的需求日益增长。今天&#xff0c;我们要介绍的是一个在GitHub上广受好评的开源项目——Jeesite5。这不仅是一个技术框架&#xff0c;更…

Python OpenCV图像去模糊实战:离焦模糊的修复原理与Python实现

针对因焦距未调好导致的彩色图像模糊问题,结合OpenCV的锐化处理和色彩空间转换技术,推荐以下分步解决方案: 一、YUV色彩空间锐化(保留颜色信息) 原理: YUV色彩空间:YUV色彩空间将图像分为亮度(Y)和色度(U和V)分量。通过仅处理亮度通道(Y),可以有效避免对颜色信…

深度学习算法优化如何实现?

深度学习算法优化是一个复杂而多维的过程&#xff0c;旨在提高模型的性能、准确性和效率。以下是一些实现深度学习算法优化的关键步骤和方法&#xff1a; 一、数据预处理与增强 数据清洗&#xff1a;去除重复、错误或无效的数据&#xff0c;确保数据集的准确性和一致性。数据增…

Windows平台的小工具,功能实用!

今天给大家分享一款超实用的Windows平台监控工具&#xff0c;堪称“桌面小管家”&#xff0c;能帮你轻松掌握电脑的各种运行状态&#xff0c;比如网速、下载速度、内存和CPU占用率等常用参数&#xff0c;让你的电脑运行情况一目了然。 TrafficMonitor 网速监控悬浮窗软件 这款…

【JavaEE进阶】MyBatis通过XML实现增删改查

目录 &#x1f38d;前言 &#x1f340;配置连接字符串和MyBatis &#x1f343;写持久层代码 ​&#x1f6a9;添加mapper接口 &#x1f6a9;添加UserInfoMapper.xml &#x1f6a9;单元测试 &#x1f332;查(Select) &#x1f6a9;结果映射 &#x1f334;增(Insert&…

Cloud之快照存储(Cloud Snapshot Storage)

Cloud之快照存储 一、什么是快照 1. 快照的定义 快照&#xff08;Snapshot&#xff09;是一种记录某一时刻数据状态的技术。在计算机存储和虚拟化环境中&#xff0c;快照能够将文件系统或虚拟机的状态保存下来&#xff0c;以便以后能够回溯到某一特定时间点。快照通常用于备…

nlp|微调大语言模型初探索(2),训练自己的聊天机器人

前言 上篇文章记录了具体的微调语言大模型步骤&#xff0c;以及在微调过程中可能遇见的各种报错&#xff0c;美中不足的是只是基于开源数据集的微调&#xff0c;今天来记录一下怎么基于自己的数据集去微调大语言模型&#xff0c;训练自己的智能机器人&#xff01;&#xff01;&…

剑指 Offer II 025. 链表中的两数相加

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20025.%20%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E4%B8%A4%E6%95%B0%E7%9B%B8%E5%8A%A0/README.md 剑指 Offer II 025. 链表中的两数相加 题目描述 给定两个 非…