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.rhkb.cn/news/459647.html

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

相关文章

leetcode 75-13 k和数对的最大数目

我的思路 sort函数排序 然后双指针判断 这样时间复杂度nlgn 题解给出了一种空间换时间方法 用哈希表 注意一下写法 现在完全不会这样写 还有就是注意sort函数的代码 怎么写排序也给忘了 sort用的是什么排序方法、 分析 自己写的代码和所谓的滑动窗口就是相当于简化了每个…

【04】RabbitMQ的集群机制

1、RabbitMQ的性能监控 关于RabbitMQ的性能监控,在管理控制台中提供了非常丰富的展示。例如:首页这个整体监控页面,就展示了非常多详细的信息: 还包括消息的生产消费频率、关键组件的使用情况等等非常多的消息。都可以在这个管理…

week08 zookeeper多种安装与pandas数据变换操作-new

课程1-hadoop-Zookeeper安装 Ububtu18.04安装Zookeeper3.7.1 环境与版本 这里采用的ubuntu18.04环境的基本配置为: hostname 为master 用户名为hadoop 静态IP为 192.168.100.3 网关为 192.168.100.2 防火墙已经关闭 /etc/hosts已经配置全版本下载地址&#xff1…

【Java基础】2、Java基础语法

f2/fnf2:选中点中的文件名 ​​​​​​​ 1.注释 为什么要有注释? 给别人和以后的自己可以看懂的解释 注释含义 注释是在程序指定位置的说明性信息;简单理解,就是对代码的一种解释 注释分类 单行注释 //注释信息 多行注释…

NAT技术和代理服务器

NAT IP原理 之前我们讨论了, IPv4协议中, IP地址数量不充足的问题 NAT技术当前解决IP地址不够用的主要手段, 是路由器的一个重要功能;NAT能够将私有IP对外通信时转为全局IP. 也就是就是一种将私有IP和全局IP相互转化的技术方法:很多学校, 家庭, 公司内部采用每个终端设置私有…

基于SSM+小程序的购物管理系统1

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM小程序的购物管理系统1,可以实现首页、个人中心、商品分类管理、商品信息管理、特价商品管理、用户管理、留言板管理、系统管理、订单管理等功能。方便用户对首页、商品…

Java审计对比工具JaVers使用

最近有个需求,需要将页面的内容生成excel或者word文档,而且每次的修改都需要生成新的版本,同时需要记录每次修改变化的内容。我们会把每次的修改的内容提交赋值给一个java对象,同时存储到数据库一条新数据,对应数据表一…

stm32入门教程--DMA 超详细!!!

目录 简介 工作模式 1、数据转运DMA 2、ADC扫描模式DMA 简介 工作模式 1、数据转运DMA 这个例子的任务是将SRAM的数组DataA,转运到另一个数组DataB中,这个基本结构里的各个参数应该如何配置呢? 首先是外设站点和存储器站点的起始地址、…

Python 爬虫的寻宝大冒险:如何捕获 API 数据的宝藏

在这个信息爆炸的数字时代,数据就像是隐藏在网络深处的宝藏,等待着勇敢的探险家去发现。今天,我们要讲述的是如何成为一名 Python 爬虫探险家,装备你的代码工具,深入 API 的迷宫,捕获那些珍贵的数据宝藏。 …

时间序列预测(十五)——有关Python项目框架的实例分析

#1024程序员节|征文# 在之前的学习中,已经对时间序列预测的相关内容有了大致的了解。为了进一步加深理解,并能够将所学知识应用于实际中,我决定找一个完整的Python框架来进行深入学习。经过寻找,我终于找到了一篇非常具…

【338】基于springboot的IT职业生涯规划系统

毕 业 设 计(论 文) 题目:it职业生涯规划系统的设计与实现 摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以…

基于SSM+小程序的童装商城管理系统(商城3)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM小程序的童装商城管理系统实现了管理员及用户。 1、管理员实现了 首页、个人中心、用户管理、分类列表管理、童装商城管理、系统管理、订单管理。 2、用户实现了 注册、登录、首…

Spring Boot框架中小企业设备监控系统开发

3系统分析 3.1可行性分析 通过对本中小企业设备管理系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本中小企业设备管理系统采用Spring Boot框架&#xff0…

QT实时显示日志内容

性能有待提高; 能够读取指定目录下的日志文件,显示在下拉框中。 选择某一个日志之后,点击获取数据按钮,能够实时刷新日志内容。 但是每次刷新都会对整个文件进行读取,文本框重新加载文本。效率很低,影响性能…

Qt/C++ 调用迅雷开放下载引擎(ThunderOpenSDK)下载数据资源

目录导读 前言ThunderOpenSDK 简介参考 xiaomi_Thunder_Cloud 示例ThunderOpenSDK 下载问题 前言 在对以前老版本的exe执行程序进行研究学习的时候,发现以前的软件是使用的ThunderOpenSDK这个迅雷开放下载引擎进行的项目数据下载,于是在网上搜索一番找到…

八,Linux基础环境搭建(CentOS7)- 安装Mysql和Hive

Linux基础环境搭建(CentOS7)- 安装Mysql和Hive 大家注意以下的环境搭建版本号,如果版本不匹配有可能出现问题! 一、Mysql下载及安装 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Orac…

等保测评:塑造信息时代的新常态

随着信息技术的飞速发展,信息安全已经成为一个全球性的问题。在信息时代,数据的安全性、完整性和可用性对于个人、企业乃至国家都至关重要。等保测评(等级保护测评),作为信息安全领域的一项重要工作,其目的…

C++ 整型大数运算(大整数运算)项目

C 整型大数运算项目 一、项目介绍二、项目变量成员三、项目实现构造函数加法减法乘法先计算再进位边计算边进位 除法与取模判断输入输出 四、项目源代码展示在 Big_integer.h 中:在 Big_integer.cpp 中: 五、测试准确性六、优化方向 一、项目介绍 整型大…

C++,STL 051(24.10.28)

内容 1.map容器的构造函数。 2.map容器的赋值操作。 运行代码 #include <iostream> #include <map>using namespace std;void printMap(map<int, int> &m) {for (map<int, int>::iterator it m.begin(); it ! m.end(); it){cout << &quo…

JavaSE笔记2】面向对象

目录 一、深刻认识面向对象 二、对象在计算机中的执行原理 三、this 四、构造器 五、封装 六、实体Javabean(实体类) 1. 是什么&#xff1f; 2. 实体类用来干什么&#xff1f; 七、成员变量和局部变量的区别 一、深刻认识面向对象 二、对象在计算机中的执行原理 三、this Java中…