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

OpenHarmony4.0配置应用开机自启

一、开发环境

系统版本:OpenHarmony 4.0.10.13
设备平台:rk3588
SDK版本:fullSDK 4.0.10.13

二、背景

使用自研应用作为默认Launcher,或者说使特定应用默认开机自启作为Home应用。

三、分析过程

通过分析原生Launcher启动流程可知:
AMS启动根据应用优先级启动应用,通常是OOBE或Launcher
foundation/ability/ability_runtime/services/abilitymgr/src/ability_manager_service.cpp

void AbilityManagerService::StartUserApps(int32_t userId, bool isBoot)
{
HILOG_INFO("StartUserApps, userId:%{public}d, currentUserId:%{public}d", userId, GetUserId());
if (currentMissionListManager_ && currentMissionListManager_->IsStarted()) {
HILOG_INFO("missionListManager ResumeManager");
currentMissionListManager_->ResumeManager();
}
//启动优先级最高的应用
StartHighestPriorityAbility(userId, isBoot);
}...void AbilityManagerService::StartHighestPriorityAbility(int32_t userId, bool isBoot)
{.../* Query the highest priority ability or extension ability, and start it. usually, it is OOBE or launcher */Want want;want.AddEntity(HIGHEST_PRIORITY_ABILITY_ENTITY);AppExecFwk::AbilityInfo abilityInfo;AppExecFwk::ExtensionAbilityInfo extensionAbilityInfo;int attemptNums = 0;//ImplicitQueryInfoByPriority查询应用ability和extensionAbility配置中的优先级while (!IN_PROCESS_CALL(bms->ImplicitQueryInfoByPriority(want,AppExecFwk::AbilityInfoFlag::GET_ABILITY_INFO_DEFAULT, userId,abilityInfo, extensionAbilityInfo))) {HILOG_INFO("Waiting query highest priority ability info completed.");++attemptNums;if (!isBoot && attemptNums > SWITCH_ACCOUNT_TRY) {HILOG_ERROR("Query highest priority ability failed.");return;}AbilityRequest abilityRequest;ComponentRequest componentRequest = initComponentRequest();if (!IsComponentInterceptionStart(want, componentRequest, abilityRequest)) {return;}usleep(REPOLL_TIME_MICRO_SECONDS);}...//启动查询到的最高优先级应用/* note: OOBE APP need disable itself, otherwise, it will be started when restart system everytime */(void)StartAbility(abilityWant, userId, DEFAULT_INVAL_VALUE);
}

至此我们了解到应用优先级取决于应用ability和extensionAbility 优先级配置
查看官方资料
module.json5配置文件
priority
查看launcher module.json5配置文件

"extensionAbilities": [{"priority": 2,  //优先级设定为2"skills": [  //接受home Want的特征标签{"entities": ["entity.system.home","flag.home.intent.from.system"],"actions": ["action.system.home","com.ohos.action.main","action.form.publish"]}],"exported": false,  //本组件不可被其他应用调研"name": "com.ohos.launcher.MainAbility

http://www.mrgr.cn/news/56990.html

相关文章:

  • Claude 3.5 Sonnent(new)发布,编程能力反超o1
  • Python Pandas 安装指南:快速入门与验证
  • php中的错误和异常捕获
  • springboot 3.2.5集成spring security 只放行get请求,其他请求403
  • Dockerfile 详解
  • 人工智能--数学基础
  • 高效休息法
  • CSS背景
  • 【Java SE 】抽象类 和 接口 详解
  • 高标准农田信息化推动农业产业链升级
  • Scala的内部类
  • uniapp学习(007-3 壁纸项目:系统高度等信息的操作)
  • 线程池常见面试题
  • hadoop
  • linux 编译安装的php7.4 开启pgsql,pdo_pgsql的扩展
  • 软件设计师考试大纲整理
  • JavaEE进阶----18.<Mybatis补充($和#的区别+数据库连接池)>
  • 如何设置Page Cache的大小为默认值
  • 32 类和对象 · 中
  • 卡牌抽卡机小程序,带来新鲜有趣的拆卡体验
  • 2025秋招八股文--mysql篇
  • 日志分析工具-应急响应实战笔记
  • 网络不稳定?试试这款Figma的中文替代设计工具
  • LLaMA Factory环境配置
  • ERP、SCM与CRM:三大系统的区别与整合策略
  • Go语言开发环境搭建