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

news2024/12/24 21:35:02

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1814983.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

404 页面代码

<template> <div class"container"><h1>404</h1> <div ><p class"text-center">当前页面无法访问,可能没有权限或已删除</p><p class"text-center"> 去别处看看吧</p> </div> <…

语义分割——mmsegmentation框架使用

目录 1.mmsegmentation简介 2.mmsegmentation安装 3.mmsegmentation使用&#xff08;代码结构介绍&#xff09; 4.mmsegmentation使用实战&#xff08;deeplab v3为例&#xff09; 4.1配置 4.2训练&#xff1a; 4.3预测&#xff1a; 1.mmsegmentation简介 mmsegmentatio…

结合兴趣行业和手头资源来看计算机专业是否还是好的选择,再前行路上FlowUs息流一直陪你成长

在这个数字化时代&#xff0c;计算机专业以其广阔的就业前景和持续的行业需求&#xff0c;依旧是许多有志青年的优选。无论你是被编程的逻辑之美所吸引&#xff0c;还是对人工智能的无限可能充满好奇&#xff0c;选择计算机专业意味着你将踏上一条充满挑战与机遇的道路。而Flow…

橘子叶子病害分类数据集38432张5类别

数据集类型&#xff1a;图像分类用&#xff0c;不可用于目标检测无标注文件 数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;38432 分类类别数&#xff1a;5 类别名称:["Citrus_Canker_Diseases_L…

有人说C语言99%的代码是可以包含在c++中,那剩下的1%是什么?

关于C语言99%的代码可以包含在C中&#xff0c;这个说法基本上是正确的&#xff0c;但并非完全绝对。至于剩下的1%不兼容的部分&#xff0c;这主要涉及一些C99标准中引入的新特性&#xff0c;这些特性在C中默认是不支持的。以下是一些主要的不兼容点&#xff1a; 刚好我有一些资…

大众点评全国丽人POI采集225万家-2024年5月底

大众点评全国丽人POI采集225万家-2024年5月底 店铺POI点位示例&#xff1a; 店铺id Hav6zIYtzhyyopIZ 店铺名称 防屏蔽 十分制服务评分 8.9 十分制环境评分 8.9 十分制划算评分 8.9 人均价格 210 评价数量 19935 店铺地址 建北一支路观音桥步行街红鼎国际A座9-9 店铺…

【perfetto分析性能学习笔记】

1.perfetto网站 https://ui.perfetto.dev/ 2.快捷键 3.线程状态分析 Runnable 表示线程正在运行或者等待CPU执行 Runnable (Preempted) 表示线程正在运行&#xff0c;但在运行过程中被其他高优先级线程抢占 Running 表示线程正在运行 Uninterruptible Sleep Uninterru…

光电液位传感器可以实现哪些功能

光电液位传感器安装于机器水箱的底部时&#xff0c;它的主要功能是监控水箱内的最低水位。当水位下降至低于传感器的预设水平时&#xff0c;传感器会立即发出信号&#xff0c;提示缺水状态。这一信号可以触发相关设备停止工作&#xff0c;以避免因缺水而导致的设备损坏或故障。…

企业IT运维管理体系-总体规划

企业IT运维管理体系-总体规划 企业IT运维管理体系的总体规划通过科学的调研、分析、设计和建设&#xff0c;提升管理成熟度、增强服务能力、实现技术创新和优化资源配置。重点在于建立组织保障体系、制定运维制度、构建运维平台和完善度量指标。通过明确运维治理模式和外包管理…

开放式耳机哪个品牌比较好?五大公认品牌推荐!

想要购买开放式耳机&#xff0c;但面对众多品牌和型号&#xff0c;你是否感到无从下手&#xff1f;别担心&#xff0c;作为耳机发烧友和测评专家&#xff0c;我为大家带来了几款热门开放式耳机的横向对比。从音质、设计、功能等方面进行详细对比&#xff0c;让你一目了然地了解…

使用Vue3+ElementPlus+高德地图实现在浏览器中搜索地点并被标记在地图中

效果描述 在页面的输入框中输入想要查询的地点&#xff0c;在输入框的下方会提示跟输入的关键字有关地点&#xff0c;然后按下回车键或者选择下方罗列的地点即可让地图跳转到搜索的位置。 效果展示 页面渲染完成的时候 输入想要查询的地点 按下回车键之后 代码实现 <temp…

图像处理:Python使用OpenCV 减少图片噪音

文章目录 1. 均值滤波 (Mean Filtering)2. 高斯滤波 (Gaussian Filtering)3. 中值滤波 (Median Filtering)4.代码实现示例5.效果展示 在图像处理中&#xff0c;均值滤波、高斯滤波和中值滤波是三种常用的降噪方法。它们的实现原理各有不同&#xff1a; 1. 均值滤波 (Mean Filte…

SD文生图超详参数使用技巧和方法-看这一篇就懂了!!!

【Stable Diffusion】文生图超详参数使用技巧和方法推荐 仁者见仁&#xff0c;智者见智&#xff0c;一千个读者&#xff0c;一千个哈姆雷特。 此章为记录学习和分享&#xff0c;为后继初学者提供便利。 作者&#xff1a;AI时代社 链接&#xff1a;https://zhuanlan.zhihu.com…

hot100 -- 栈

目录 &#x1f6a9;有效的括号 &#x1f33c;最小栈 AC 栈 AC 链表 &#x1f33c;字符串解码 &#x1f43b;每日温度 &#x1f352;柱状图中的最大矩形 解释 AC 单调栈 &#x1f6a9;有效的括号 20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 1&#xf…

Seal^_^【送书活动第6期】——《Docker快速入门》

Seal^_^【送书活动第6期】——《Docker快速入门》 一、参与方式二、本期推荐图书2.1 作者荐语2.2 编辑推荐2.3 图书简介2.4 前 言2.5 目 录 三、正版购买 从Docker Desktop入手&#xff0c;快速掌握容器技术&#xff01;&#xff01;&#xff01;&#xff01; 一、参与方式 1、…

HALCON-从入门到入门-阈值分割定位算子综合运用

1.废话 之前我的一个师兄告诉我&#xff0c;针对图像上想要定位的内容&#xff0c;机器视觉中定位的方式有很多种&#xff0c;但是如果用阈值分割定位可以做的&#xff0c;就不要用模板匹配了。因为基于形状的模板匹配始终会存在匹配不到的风险&#xff0c;那如果打光效果可以…

VS2022使用C语言代码访问MariaDB数据库

第一步,先安装数据库服务器,如果你不想安装这个服务器,请看结尾: 第二步,建立数据库 第三步,配置VS2022 第四步,写代码 ,这里其实使用的是MariaDB 的C语言 API #include <stdio.h> #include <window

python添加两组实验显著性

Python-statannotations库添加显著性标注&#xff1a; 1、官网资料&#xff1a;https://github.com/trevismd/statannotations 官网例子&#xff1a; import seaborn as snsfrom statannotations.Annotator import Annotatordf sns.load_dataset("tips") x "…

使用 C# 学习面向对象编程:第 7 部分

多态性 我们在程序中使用多态的频率是多少&#xff1f;多态是面向对象编程语言的第三大支柱&#xff0c;我们几乎每天都在使用它&#xff0c;却不去想它。 这是一个非常简单的图表&#xff0c;它将解释多态性本身。 简单来说&#xff0c;我们可以说&#xff0c;只要我们重载类…

机器学习模型评价、模型与算法选择(综述)

摘要&#xff1a;本文主要讨论了模型评估、模型选择和算法选择的重要性&#xff0c;并回顾了解决这些任务的不同技术。文章强调了在小数据集上不推荐使用留出方法&#xff0c;而应使用bootstrap技术来评估性能的不确定性。在讨论偏差-方差权衡时&#xff0c;文章比较了leave-on…