android 14.0 禁止app启动(不显示app列表)和允许app运行

本文详细分析了在Android 14.0系统中如何禁止和允许应用程序的启动和运行。通过探讨PowerManagerService和PackageManager的相关功能,特别是`setApplicationEnabledSetting`方法,可以实现对应用的禁用(从桌面消失,仅在系统设置内可见)和启用。核心实现案例中,通过DisallowedRunningApp系统属性获取禁用应用列表,并调用`setApplicationEnabledSetting`来禁止或启用特定应用的运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.前言

在14.0系统rom产品开发中,在进行教育平板的定制开发中,可以有需求要实现禁止app启动和允许app运行的接口,禁用后app后已安装的应用从桌面消失,只存在于系统设置内的应用列表里,无法调用。启用后,恢复正常使用,在桌面显示。对于app管理的都是由PackageManager来负责的,PackageManger的主要职责是管理应用程序包,通过它可以获取应用程序信息 所以就查看PackManager的相关源码看
能不能实现需求,接下来分析下相关的产品需求

2.禁止app启动(不显示app列表)和允许app运行的相关分析

PowerManagerService(简称PMS)主要是负责协调、管理设备CPU资源,并提供功能接口给应用框架层或应用层申请获取CPU资源的一个服务,例如:亮灭屏、关机、WakeLock管理、Dreamland(屏保模式)、休眠时间等行为。

PMS作用:

1.管理系统的jar包和系统的apk,负责系统的权限

2.负责apk的卸载,安装,更新,解析

3.对其他应用服务提供安装卸载服务

PMS启动过程描述: 和intsalld链接进行apk的安装卸载操作(实际安装卸载apk是有installd来进行的,PMS只是提供接口);

创建PackageHandle来处理外部apk的安装卸载请求;处理系统权限相关文件扫描安装

一、PackageManager的功能:

1、安装,卸载应用
2、查询permission相关信息
3、查询Application相关信息(application,activity,receiver,service,provid

<think>好的,我现在需要回答用户关于Android 14.0是否禁用了应用首次启动动画的问题。首先,我得先确认用户的问题具体指的是什么。应用首次启动动画通常指的是当用户第一次打开应用时显示启动画面,比如Splash Screen。Android从12(API 31)开始引入了SplashScreen API,所以可能需要查看Android 14(API 34)的相关文档是否有变化。 接下来,我需要查阅Android 14的官方文档或者开发者指南,看看是否有提到禁用首次启动动画的改动。根据之前版本的更新,Google有时会调整启动行为,但可能会完全禁用动画,而是提供更多控制选项。比如,在Android 12中,应用可以通过SplashScreen API自定义启动动画的持续时间、图标等。 另外,用户提到的引用部分是关于iOS状态栏样式的代码,可能与当前问题无关,但需要确保回答时引用的资料正确。需要检查是否有Android 14的变更记录中提到启动动画的禁用。例如,查看Android 14的Behavior changes文档,看看有没有相关条目。 可能的思路是:Android 14默认仍保留启动动画,但开发者可以通过API进行配置,比如设置主题属性或使用SplashScreen API来缩短或隐藏动画。如果用户想禁用,可能需要通过代码或主题设置来实现,而是系统默认禁用。 还需要确认是否有第三方信息或开发者社区提到Android 14在这方面有变化。例如,某些测试版本或开发者预览版的说明中是否有相关调整。如果官方文档没有明确说明禁用,那么答案可能是否定的,即Android 14并未默认禁用,但允许开发者控制。 总结步骤: 1. 检查Android 14的官方文档关于启动动画的部分。 2. 确认是否有新的API或现有API的改动。 3. 查看是否有明确的禁用声明或开发者选项。 4. 提供配置方法,指导用户如何自定义或禁用启动动画。 可能遇到的问题:如果官方文档没有明确说明,可能需要根据现有API推断答案,或者参考最新的开发者资源。需要确保回答准确,避免误导用户。</think>在Android 14.0中,应用首次启动动画(即冷启动时的默认启动画面)并未被系统默认禁用,但开发者可以通过配置应用主题或代码进一步控制其行为。具体而言: 1. **默认行为** Android 12(API 31)及更高版本引入了标准化的$SplashScreen$ API[^1],用于统一应用启动动画。Android 14.0延续了这一设计,首次启动时仍会显示由系统生成的默认动画,包含应用图标主题背景色。 2. **自定义或禁用动画的方法** - **修改主题属性** 在$res/values/themes.xml$中设置`windowSplashScreenAnimatedIcon`为空,并调整动画持续时间: ```xml <style name="Theme.MyApp" parent="Theme.Material3.DayNight"> <item name="windowSplashScreenAnimatedIcon">@null</item> <item name="windowSplashScreenAnimationDuration">0</item> </style> ``` - **通过代码控制** 在$MainActivity.kt$中调用$SplashScreen$ API: ```kotlin override fun onCreate(savedInstanceState: Bundle?) { val splashScreen = getSplashScreen() splashScreen.setKeepOnScreenCondition { false } // 立即结束动画 super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } ``` 3. **注意事项** 完全禁用启动动画可能导致用户在应用初始化期间感知到白屏,建议保留短暂动画以提升体验。官方文档强调需遵循$SplashScreen$兼容性规范。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安卓兼职framework应用工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值