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

鸿蒙开发:通过startAbilityByType拉起垂类应用

通过startAbilityByType拉起垂类应用

使用场景

开发者可通过特定的业务类型如导航、金融等,调用startAbilityByType接口拉起对应的垂域面板,该面板将展示目标方接入的垂域应用,由用户选择打开指定应用以实现相应的垂类意图。垂域面板为调用方提供统一的安全、可信的目标方应用,同时降低调用方的接入成本。

约束限制

设备限制 HarmonyOS NEXT Developer Preview0及以上版本的设备

接口说明

接口startAbilityByType11+  是[UIAbilityContext]和[UIExtensionContentSession]提供的支持基于垂域业务类型拉起垂域面板,调用方通过指定特定的垂域业务类型即可拉起对应的垂域面板,在垂域面板上将展示目标方接入的垂域应用。

type为navigation导航对应的wantParam:

属性名称含义数据类型是否缺省
destinationLatitude终点纬度GCJ-02numbersceneType=1或2时不可缺省
destinationLongitude终点经度GCJ-02numbersceneType=1或2时不可缺省
sceneType意图取值 :1:路线规划 2:导航 3: 地点搜索number可缺省,缺省时默认为1
destinationName终点名称stringsceneType=3时不可缺省
originName起点名称(路线规划场景有效)string可缺省
originLatitude起点纬度GCJ-02(路线规划场景有效)number可缺省
originLongitude起点经度GCJ-02(路线规划场景有效)number可缺省
vehicleType交通出行工具:0:驾车 1:步行 2:骑行 3:公交(路线规划场景有效)number可缺省,缺省时由应用自行处理

接入步骤

调用方接入步骤

  1. 导入ohos.app.ability.common模块。

    import common from '@ohos.app.ability.common';
    
  2. 构造接口参数并调用startAbilityByType接口。

示例

import common from '@ohos.app.ability.common';
let context = getContext(this) as common.UIAbilityContext;
let wantParam: Record<string, Object> = {'sceneType':1,'destinationLatitude':32.060844,'destinationLongitude':118.78315,'destinationName':'xx市xx路xx号','originName':'xx市xx公园','originLatitude':31.060844,'originLongitude':120.78315,'vehicleType':0
};
let abilityStartCallback: common.AbilityStartCallback = {onError: (code: number, name: string, message: string) => {console.log(`code:` + code + `name:` + name + `message:` + message);}
}
context.startAbilityByType("navigation", wantParam, abilityStartCallback, (err) => {if (err) {console.error(`startAbilityByType fail, err: ${JSON.stringify(err)}`);} else {console.log(`success`);}
});

效果示例图:

效果示例图

目标方接入步骤

  1. 导入ohos.app.ability.UIAbility模块。

    import UIAbility from '@ohos.app.ability.UIAbility';
    
  2. 在module.json5中新增[linkFeature]属性并设置声明当前应用支持的特性功能,从而系统可以从设备已安装应用中找到当前支持该特性的应用。

    配置示例:

    {
    "abilities": [{"skills": [{"uris": [{"scheme": "maps", // 这里仅示意,应用需确保这里声明的的uri能被外部正常拉起"host": "navigation","path": "","linkFeature": "navigation" // 声明应用支持导航功能},{"scheme": "maps", // 这里仅示意,应用需确保这里声明的的uri能被外部正常拉起"host": "routePlan","path": "","linkFeature": "routePlan" // 声明应用支持路线规划功能},{"scheme": "maps", // 这里仅示意,应用需确保这里声明的的uri能被外部正常拉起"host": "search","path": "","linkFeature": "textSearch" // 声明应用支持位置搜索功能}]}]}
    ]
    }
    
  3. 解析参数并做对应处理。

    UIAbility::onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void
    

    在参数want.parameters中会携带Caller方传入的参数(与调用方传入的有些差异),如下表所示:

    属性名称含义数据类型是否缺省
    destinationLatitude终点纬度GCJ-02numbersceneType=1或2时不可缺省
    destinationLongitude终点经度GCJ-02numbersceneType=1或2时不可缺省
    destinationName终点名称stringsceneType=3时不可缺省
    originName起点名称string可缺省,存在时可用于展示路线规划页面
    originLatitude起点纬度GCJ-02number可缺省,存在时可用于展示路线规划页面
    originLongitude起点经度GCJ-02number可缺省,存在时可用于展示路线规划页面
    vehicleType交通出行工具:0:驾车 1:步行 2:骑行 3:公交(路线规划场景有效)number可缺省,缺省时由应用自行处理

    应用可根据[linkFeature]中定义的特性功能,比如路线规划和导航结合接收到的参数开发不同的样式页面。

示例:

import AbilityConstant from '@ohos.app.ability.AbilityConstant';
import hilog from '@ohos.hilog';
import UIAbility from '@ohos.app.ability.UIAbility';
import Want from '@ohos.app.ability.Want';
import window from '@ohos.window';let destinationLatitude:number;
let destinationLongitude:number;
let originLatitude:number | undefined;
let originLongitude:number | undefined;export default class EntryAbility extends UIAbility {onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');destinationLatitude = want.parameters?.destinationLatitude as number;destinationLongitude = want.parameters?.destinationLongitude as number;originLatitude = want.parameters?.originLatitude as number | undefined;originLongitude = want.parameters?.originLongitude as number | undefined;}onWindowStageCreate(windowStage: window.WindowStage) {hilog.info(0x0000, 'testTag', '%{public}s', `Ability onWindowStageCreate: ${JSON.stringify(this.context)}`);const storage: LocalStorage = new LocalStorage({"destinationLatitude": destinationLatitude,"destinationLongitude": destinationLongitude,"originLatitude": originLatitude,"originLongitude": originLongitude} as Record<string, object>);if(originLatitude !== undefined && originLongitude !== undefined) {windowStage.loadContent('pages/IndexForNavigation', storage);} else {windowStage.loadContent('pages/IndexForRoutePlan', storage);}}
}

相关文章:

鸿蒙开发:通过startAbilityByType拉起垂类应用

通过startAbilityByType拉起垂类应用 使用场景 开发者可通过特定的业务类型如导航、金融等&#xff0c;调用startAbilityByType接口拉起对应的垂域面板&#xff0c;该面板将展示目标方接入的垂域应用&#xff0c;由用户选择打开指定应用以实现相应的垂类意图。垂域面板为调用…...

docker 更换镜像源

打开对应的配置文件 vi /etc/docker/daemon.json 输入文件内容入下 {"registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8…...

Springboot(若依)国际化配置接口访问后返回????????

最近使用若依的框架进行二次开发&#xff0c;配置了国际化&#xff0c;application.yml配置英文时没问题&#xff0c;但配置中文basename: i18n/messages_zh_CN&#xff0c;访问接口就直接返回的???&#xff0c;如图&#xff1a; 于是检查了I18nConfig文件&#xff0c;没配错…...

java1

在继承中&#xff0c;创建子类对象&#xff0c;访问成员方法的规则&#xff1a; 创建的对象是谁&#xff0c;就优先用谁&#xff0c;没有再向上找 注意&#xff1a;无论是成员变量还是成员方法&#xff0c; 如果没有都是向上找父类&#xff0c;不会向下找子类 继承的特点&#…...

pytest中一个场景测试的demo

注意点1&#xff1a; allure.severity 是一个装饰器&#xff0c;用于设置测试用例的严重性级别。 allure.severity_level.CRITICAL 是Allure提供的严重性级别之一&#xff0c;表示这个测试用例极为重要。allure.severity_level.BLOCKER&#xff1a;阻塞级别的问题&#xff0c…...

windows下安装IntelliJIDEA

windows下安装IntelliJIDEA 步骤1&#xff1a;下载IntelliJ IDEA 打开浏览器并访问IntelliJ IDEA下载页面. https://www.jetbrains.com/idea/download/选择合适的版本&#xff1a; Ultimate&#xff1a;付费版本&#xff0c;包含更多功能&#xff0c;适合专业开发。Community…...

string经典题目(C++)

文章目录 前言一、最长回文子串1.题目解析2.算法原理3.代码编写 二、字符串相乘1.题目解析2.算法原理3.代码编写 总结 前言 一、最长回文子串 1.题目解析 给你一个字符串 s&#xff0c;找到 s 中最长的回文子串。 示例 1&#xff1a; 输入&#xff1a;s “babad” 输出&am…...

三篇卫星切换的论文

目录 一、Energy-Aware Satellite Handover based on Deep Reinforcement Learning 1、题目翻译 2、来源 3、内容 二、A Reliable Handover Strategy with Second Satellite Selection in LEO Satellite Networks 1、题目翻译 2、来源 3、内容 三、User Grouping-Based…...

VUE之重定向redirect

VUE之路由和重定向redirect 这个小知识点是在学习做项目的时候遇到的一个问题&#xff0c;借鉴了一个他人的项目&#xff0c;是一个酒店管理系统&#xff0c;拿到源码之后导到我的vscode里。 参考链接 导的过程比较顺利&#xff0c;正常安装&#xff0c;加依赖&#xff0c;没有…...

服务器时区与数据库时区不一致导致时间bug记录

1、背景 一个活动&#xff0c;需要按照自然月刷新&#xff0c;每月一期&#xff0c;以活动开始当月作为第一期&#xff0c;每期可配置不同数据。问题出现在&#xff1a;活动开始时间为本月&#xff0c;但是查询用户数据发现当前为第二期&#xff0c;反复查看代码&#xff0c;确…...

华为鸿蒙HarmonyOS应用开发者高级认证题库

判断题 1、云函数打包完成后&#xff0c;需要到AppGallery Connect创建对应函数的触发器才可以在端侧中调用 错 2、在column和Row容器组件中&#xff0c;aligntems用于设置子组件在主轴方向上的对齐格式&#xff0c;justifycontent用于设置子组件在交叉轴方向上的对齐格式 错…...

细说MCU串口函数及使用printf函数实现串口发送数据的方法

目录 1、硬件及工程 2、串口相关的库函数 &#xff08;1&#xff09;串口中断服务函数&#xff1a; &#xff08;2&#xff09;串口接收回调函数&#xff1a; &#xff08;3&#xff09;串口接收中断配置函数&#xff1a; &#xff08;4&#xff09;非中断发送&#xff…...

PBox iOS端的应用隐藏、图片视频加密软件

哈喽&#xff0c;大家下午好&#xff01;相信大家的手机中一定存在很多的私密内容&#xff0c;比如软件、照片、视频或者文档文件&#xff0c;很多都是不方便让外人看到的&#xff0c;此时就需要一款隐藏工具&#xff0c;市面上这类软件大部分都是收费的&#xff0c;应大家的需…...

【QT5】<总览五> QT多线程、TCP/UDP

文章目录 前言 一、QThread多线程 二、QT中的TCP编程 1. TCP简介 2. 服务端程序编写 3. 客户端程序编写 4. 服务端与客户端测试 三、QT中的UDP编程 1. UDP简介 2. UDP单播与广播程序 前言 承接【QT5】&#xff1c;总览四&#xff1e; QT常见绘图、图表及动画。若存在…...

fastadmin/thinkPHPQueue消息队列详细教程

thinkphp-queue 是thinkphp 官方提供的一个消息队列服务,它支持消息队列的一些基本特性: 消息的发布,获取,执行,删除,重发,失败处理,延迟执行,超时控制等队列的多队列, 内存限制 ,启动,停止,守护等消息队列可降级为同步执行1、通过composer安装thinkPHP消息队列 …...

社区新标准发布!龙蜥社区标准化 SIG MeetUp 圆满结束

5 月 31 日&#xff0c;「龙蜥社区“走进系列”」第 9 期之走进阿里云于北京圆满结束。来自阿里云、浪潮信息、红旗软件、中兴通讯|中兴新支点、中科曙光、中科方德、统信软件、麒麟软件、万里红、普华基础软件、飞腾信息、凝思、申威、新华三等公司的 30 余位专家出席会议。会…...

快速开始一个go程序(极简-快速入门)

一、 实验介绍 1.1 实验简介 为了能更高效地使用语言进行编码&#xff0c;Go 语言有自己的哲学和编程习惯。Go 语言的设计者们从编程效率出发设计了这门语言&#xff0c;但又不会丢掉访问底层程序结构的能力。设计者们通过一组最少的关键字、内置的方法和语法&#xff0c;最终…...

HTTPS缺失?如何轻松解决IP地址访问时的“不安全”警告

一、问题现象 如果访问网站时出现以下任何一种情况&#xff0c;则说明该网站需要立即整改&#xff1a; 1.浏览器地址栏那里出现“不安全”字样&#xff1b; 2.小锁标志被红叉&#xff08;&#xff09;、斜线&#xff08;&#xff3c;&#xff09;等标志为不可用&#xff1b;…...

验证码识别接口、多种样式验证码识别接口、中英文验证码识别接口

验证码识别接口、多种样式验证码识别接口、中英文验证码识别接口 本文提供一个基于OCR和机器学习的验证码识别接口&#xff0c;能够识别较复杂的中文、英文验证码&#xff0c;在OCR的基础上针对验证码进行算法优化。本接口是收费的&#xff08;最低0.5分1次调用&#xff0c;试…...

测试bert_base不同并行方式下的推理性能

测试bert_base不同并行方式下的推理性能 一.测试数据二.测试步骤1.生成bert配置文件2.安装依赖3.deepspeed 4卡tp并行4.FSDP 4卡并行5.手动将权值平均拆到4张卡,单进程多卡推理6.手动切分成4份,基于NCCL实现pipeline并行 本文测试了bert_base模型在不同并行方式下的推理性能 约…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

前端开发者常用网站

Can I use网站&#xff1a;一个查询网页技术兼容性的网站 一个查询网页技术兼容性的网站Can I use&#xff1a;Can I use... Support tables for HTML5, CSS3, etc (查询浏览器对HTML5的支持情况) 权威网站&#xff1a;MDN JavaScript权威网站&#xff1a;JavaScript | MDN...

2.3 物理层设备

在这个视频中&#xff0c;我们要学习工作在物理层的两种网络设备&#xff0c;分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间&#xff0c;需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质&#xff0c;假设A节点要给…...

41道Django高频题整理(附答案背诵版)

解释一下 Django 和 Tornado 的关系&#xff1f; Django和Tornado都是Python的web框架&#xff0c;但它们的设计哲学和应用场景有所不同。 Django是一个高级的Python Web框架&#xff0c;鼓励快速开发和干净、实用的设计。它遵循MVC设计&#xff0c;并强调代码复用。Django有…...