0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-06-12 14:32 次阅读

通过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);
        }
    }
}

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    8488

    浏览量

    150809
  • 鸿蒙
    +关注

    关注

    57

    文章

    2306

    浏览量

    42731
收藏 人收藏

    评论

    相关推荐

    深圳市24年,实现鸿蒙原生应用数占全国总量10%以上

    不吹不捧,鸿蒙自从24年的星河版发布会之后。纯血鸿蒙已经开启大规模的行动,首批 200 + 鸿蒙原生应用已经在加速开发,先锋域齐备,覆盖便
    发表于 03-04 21:42

    激光准仪的原理是什么?

    激光准仪是在光学准系统的基础上添加 2 只半导体激光器,其中之一通过准望远镜将激光束发射出来。
    发表于 09-17 09:01

    鸿蒙应用开发基础术语学习 轻应用

    开发者可以通过鸿蒙轻应用,通过点击关键词解锁详细解释的方式,方便快速第了解鸿蒙的基础术语。可以独立作为一个应用发展,也可以作为各种应用中的一
    发表于 05-19 18:33

    鸿蒙分布式任务调度

    鸿蒙分布式任务调度,实现跨设备FA拉起
    发表于 06-12 17:28

    鸿蒙智联HarmonyOS Connect原子化服务拉起方式与开发整体流程

    一、拉起方式用户可以通过手机碰一碰、靠近发现等方式,快速拉起手机上的原子化服务,实现HarmonyOS Connect设备的连接和控制。三种拉起方式的简介参见下表。二、应用场景设备连接
    发表于 02-01 15:34

    鸿蒙 OS 应用开发初体验

    kotlin 语言了,编程语言变成了 JavaScript 的前端语言,这意味着我们需要适应用前端的思想去开发鸿蒙应用,比如状态管理。 总结 本文纯初体验遥遥领先背后的鸿蒙操作系统
    发表于 11-02 19:38

    鸿蒙系统是基于什么开发

    设备,开发者在上面开发应用相对来说也会更简单一些。 华为鸿蒙系统采用开源的方式,源代码已经在官方公布的网站挂出。根据其源代码来看,内核基于C语言开发,部分功能模块
    的头像 发表于 07-01 16:43 1.6w次阅读

    鸿蒙系统是基于什么开发

    争议,那么鸿蒙系统到底是基于什么开发的呢?下面小编就为大家带来鸿蒙系统是基于什么开发的答案。 鸿蒙系统是基于什么
    的头像 发表于 07-05 17:12 1.2w次阅读

    开发鸿蒙开发者使用的自定义滚轮控件

    该三方开源库从github fork过来,主要将底层接口调用的实现修改成鸿蒙接口的实现,将三方库鸿蒙化,供开发鸿蒙应用的开发者使用。 一个自
    发表于 03-30 11:38 0次下载

    百度离线计算系统的演进过程 百度离线计算系统的设计与实现

    本文以百度离线计算系统的演进方向为主线,详细描述搜索离线计算系统发展过程中遇到的问题,以及对应的解决方案。架构演进过程中一直奉行“没有最好的架构,只有最合适的架构”的宗旨,面对
    的头像 发表于 09-01 14:51 452次阅读
    百度<b class='flag-5'>垂</b><b class='flag-5'>类</b>离线计算系统的演进过程 百度<b class='flag-5'>垂</b><b class='flag-5'>类</b>离线计算系统的设计与实现

    导线弧大小标准如何定?输电线路弧监测装置检测弧超简单!

    今天,风河智能带大家来了解输电线路导线弧大小的标准以及弧在线监测装置的使用方法。 引言:架空输电线路是一种常见的输电方式,利用杆塔将导线架设于高空,线路长达几百上千公里,导线悬挂在立杆之间会产生
    的头像 发表于 01-12 09:14 1651次阅读

    输电线路弧变化的原因及弧在线监测装置的工作原理

    导线弧变大可能会导致导线之间相互碰撞、线下安全距离不够等,进而引发短路或安全事故,鼎信输电线路弧在线监测装置DX-WPS100-HC是一种高科技弧监测设备,通过安装在导线上的弧
    的头像 发表于 01-17 09:19 1318次阅读

    鸿蒙开发用什么语言?

    Java的,从API8开始,只能用Arkts,js或着C++开发了,我们这篇文章重点讲下应用级别的开发鸿蒙应用开发 和安卓应用和IOS应用开发
    的头像 发表于 01-30 16:12 1483次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>用什么语言?

    使用 Taro 开发鸿蒙原生应用 —— 快速上手,鸿蒙应用开发指南

    随着鸿蒙系统的不断完善,许多应用厂商都希望将自己的应用移植到鸿蒙平台上。最近,Taro 发布了 v4.0.0-beta.x 版本,支持使用 Taro 快速开发鸿蒙原生应用,也可将现有的
    的头像 发表于 02-02 16:09 818次阅读
    使用 Taro <b class='flag-5'>开发</b><b class='flag-5'>鸿蒙</b>原生应用 —— 快速上手,<b class='flag-5'>鸿蒙</b>应用<b class='flag-5'>开发</b>指南

    鸿蒙APP开发实战:【Api9】拍照、拍视频;选择图片、视频、文件工具

    鸿蒙开发过程中,经常会进行系统调用,拍照、拍视频、选择图库图片、选择图库视频、选择文件。今天就给大家分享一个工具
    的头像 发表于 03-26 16:27 720次阅读
    <b class='flag-5'>鸿蒙</b>APP<b class='flag-5'>开发</b>实战:【Api9】拍照、拍视频;选择图片、视频、文件工具<b class='flag-5'>类</b>