0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙開發(fā):通過startAbilityByType拉起垂類應(yīng)用

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-06-12 14:32 ? 次閱讀

通過startAbilityByType拉起垂類應(yīng)用

使用場(chǎng)景

開發(fā)者可通過特定的業(yè)務(wù)類型如導(dǎo)航、金融等,調(diào)用startAbilityByType接口拉起對(duì)應(yīng)的垂域面板,該面板將展示目標(biāo)方接入的垂域應(yīng)用,由用戶選擇打開指定應(yīng)用以實(shí)現(xiàn)相應(yīng)的垂類意圖。垂域面板為調(diào)用方提供統(tǒng)一的安全、可信的目標(biāo)方應(yīng)用,同時(shí)降低調(diào)用方的接入成本。

約束限制

設(shè)備限制 HarmonyOS NEXT Developer Preview0及以上版本的設(shè)備

接口說明

接口startAbilityByType11+ 是[UIAbilityContext]和[UIExtensionContentSession]提供的支持基于垂域業(yè)務(wù)類型拉起垂域面板,調(diào)用方通過指定特定的垂域業(yè)務(wù)類型即可拉起對(duì)應(yīng)的垂域面板,在垂域面板上將展示目標(biāo)方接入的垂域應(yīng)用。

type為navigation導(dǎo)航對(duì)應(yīng)的wantParam:

屬性名稱含義數(shù)據(jù)類型是否缺省
destinationLatitude終點(diǎn)緯度GCJ-02numbersceneType=1或2時(shí)不可缺省
destinationLongitude終點(diǎn)經(jīng)度GCJ-02numbersceneType=1或2時(shí)不可缺省
sceneType意圖取值 :1:路線規(guī)劃 2:導(dǎo)航 3: 地點(diǎn)搜索number可缺省,缺省時(shí)默認(rèn)為1
destinationName終點(diǎn)名稱stringsceneType=3時(shí)不可缺省
originName起點(diǎn)名稱(路線規(guī)劃場(chǎng)景有效)string可缺省
originLatitude起點(diǎn)緯度GCJ-02(路線規(guī)劃場(chǎng)景有效)number可缺省
originLongitude起點(diǎn)經(jīng)度GCJ-02(路線規(guī)劃場(chǎng)景有效)number可缺省
vehicleType交通出行工具:0:駕車 1:步行 2:騎行 3:公交(路線規(guī)劃場(chǎng)景有效)number可缺省,缺省時(shí)由應(yīng)用自行處理

接入步驟

調(diào)用方接入步驟

  1. 導(dǎo)入ohos.app.ability.common模塊。
    import common from '@ohos.app.ability.common';
    
  2. 構(gòu)造接口參數(shù)并調(diào)用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號(hào)',
    '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`);
  }
});

效果示例圖:

效果示例圖

目標(biāo)方接入步驟

  1. 導(dǎo)入ohos.app.ability.UIAbility模塊。

    import UIAbility from '@ohos.app.ability.UIAbility';
    
  2. 在module.json5中新增[linkFeature]屬性并設(shè)置聲明當(dāng)前應(yīng)用支持的特性功能,從而系統(tǒng)可以從設(shè)備已安裝應(yīng)用中找到當(dāng)前支持該特性的應(yīng)用。
    配置示例:

    {
    "abilities": [
        {
        "skills": [
            {
            "uris": [
                {
                "scheme": "maps", // 這里僅示意,應(yīng)用需確保這里聲明的的uri能被外部正常拉起
                "host": "navigation",
                "path": "",
                "linkFeature": "navigation" // 聲明應(yīng)用支持導(dǎo)航功能
                },
                {
                "scheme": "maps", // 這里僅示意,應(yīng)用需確保這里聲明的的uri能被外部正常拉起
                "host": "routePlan",
                "path": "",
                "linkFeature": "routePlan" // 聲明應(yīng)用支持路線規(guī)劃功能
                },
                {
                "scheme": "maps", // 這里僅示意,應(yīng)用需確保這里聲明的的uri能被外部正常拉起
                "host": "search",
                "path": "",
                "linkFeature": "textSearch" // 聲明應(yīng)用支持位置搜索功能
                }
            ]
            }
        ]
        }
    ]
    }
    
  3. 解析參數(shù)并做對(duì)應(yīng)處理。

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

    在參數(shù)want.parameters中會(huì)攜帶Caller方傳入的參數(shù)(與調(diào)用方傳入的有些差異),如下表所示:

    屬性名稱含義數(shù)據(jù)類型是否缺省
    destinationLatitude終點(diǎn)緯度GCJ-02numbersceneType=1或2時(shí)不可缺省
    destinationLongitude終點(diǎn)經(jīng)度GCJ-02numbersceneType=1或2時(shí)不可缺省
    destinationName終點(diǎn)名稱stringsceneType=3時(shí)不可缺省
    originName起點(diǎn)名稱string可缺省,存在時(shí)可用于展示路線規(guī)劃頁面
    originLatitude起點(diǎn)緯度GCJ-02number可缺省,存在時(shí)可用于展示路線規(guī)劃頁面
    originLongitude起點(diǎn)經(jīng)度GCJ-02number可缺省,存在時(shí)可用于展示路線規(guī)劃頁面
    vehicleType交通出行工具:0:駕車 1:步行 2:騎行 3:公交(路線規(guī)劃場(chǎng)景有效)number可缺省,缺省時(shí)由應(yīng)用自行處理

    應(yīng)用可根據(jù)[linkFeature]中定義的特性功能,比如路線規(guī)劃和導(dǎo)航結(jié)合接收到的參數(shù)開發(fā)不同的樣式頁面。

示例:

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

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8257

    瀏覽量

    149973
  • 鴻蒙
    +關(guān)注

    關(guān)注

    56

    文章

    2267

    瀏覽量

    42493
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    深圳市24年,實(shí)現(xiàn)鴻蒙原生應(yīng)用數(shù)占全國(guó)總量10%以上

    不吹不捧,鴻蒙自從24年的星河版發(fā)布會(huì)之后。純血鴻蒙已經(jīng)開啟大規(guī)模的行動(dòng),首批 200 + 鴻蒙原生應(yīng)用已經(jīng)在加速開發(fā),先鋒域齊備,覆蓋便
    發(fā)表于 03-04 21:42

    激光準(zhǔn)儀的原理是什么?

    激光準(zhǔn)儀是在光學(xué)準(zhǔn)系統(tǒng)的基礎(chǔ)上添加 2 只半導(dǎo)體激光器,其中之一通過準(zhǔn)望遠(yuǎn)鏡將激光束發(fā)射出來。
    發(fā)表于 09-17 09:01

    鴻蒙應(yīng)用開發(fā)基礎(chǔ)術(shù)語學(xué)習(xí) 輕應(yīng)用

    開發(fā)者可以通過鴻蒙輕應(yīng)用,通過點(diǎn)擊關(guān)鍵詞解鎖詳細(xì)解釋的方式,方便快速第了解鴻蒙的基礎(chǔ)術(shù)語??梢元?dú)立作為一個(gè)應(yīng)用發(fā)展,也可以作為各種應(yīng)用中的一
    發(fā)表于 05-19 18:33

    鴻蒙分布式任務(wù)調(diào)度

    鴻蒙分布式任務(wù)調(diào)度,實(shí)現(xiàn)跨設(shè)備FA拉起
    發(fā)表于 06-12 17:28

    鴻蒙智聯(lián)HarmonyOS Connect原子化服務(wù)拉起方式與開發(fā)整體流程

    一、拉起方式用戶可以通過手機(jī)碰一碰、靠近發(fā)現(xiàn)等方式,快速拉起手機(jī)上的原子化服務(wù),實(shí)現(xiàn)HarmonyOS Connect設(shè)備的連接和控制。三種拉起方式的簡(jiǎn)介參見下表。二、應(yīng)用場(chǎng)景設(shè)備連接
    發(fā)表于 02-01 15:34

    鴻蒙 OS 應(yīng)用開發(fā)初體驗(yàn)

    kotlin 語言了,編程語言變成了 JavaScript 的前端語言,這意味著我們需要適應(yīng)用前端的思想去開發(fā)鴻蒙應(yīng)用,比如狀態(tài)管理。 總結(jié) 本文純初體驗(yàn)遙遙領(lǐng)先背后的鴻蒙操作系統(tǒng)
    發(fā)表于 11-02 19:38

    鴻蒙系統(tǒng)是基于什么開發(fā)

    設(shè)備,開發(fā)者在上面開發(fā)應(yīng)用相對(duì)來說也會(huì)更簡(jiǎn)單一些。 華為鴻蒙系統(tǒng)采用開源的方式,源代碼已經(jīng)在官方公布的網(wǎng)站掛出。根據(jù)其源代碼來看,內(nèi)核基于C語言開發(fā),部分功能模塊
    的頭像 發(fā)表于 07-01 16:43 ?1.5w次閱讀

    鴻蒙系統(tǒng)是基于什么開發(fā)

    爭(zhēng)議,那么鴻蒙系統(tǒng)到底是基于什么開發(fā)的呢?下面小編就為大家?guī)?b class='flag-5'>鴻蒙系統(tǒng)是基于什么開發(fā)的答案。 鴻蒙系統(tǒng)是基于什么
    的頭像 發(fā)表于 07-05 17:12 ?1.1w次閱讀

    開發(fā)鴻蒙開發(fā)者使用的自定義滾輪控件

    該三方開源庫(kù)從github fork過來,主要將底層接口調(diào)用的實(shí)現(xiàn)修改成鴻蒙接口的實(shí)現(xiàn),將三方庫(kù)鴻蒙化,供開發(fā)鴻蒙應(yīng)用的開發(fā)者使用。 一個(gè)自
    發(fā)表于 03-30 11:38 ?0次下載

    百度離線計(jì)算系統(tǒng)的演進(jìn)過程 百度離線計(jì)算系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    本文以百度離線計(jì)算系統(tǒng)的演進(jìn)方向?yàn)橹骶€,詳細(xì)描述搜索離線計(jì)算系統(tǒng)發(fā)展過程中遇到的問題,以及對(duì)應(yīng)的解決方案。架構(gòu)演進(jìn)過程中一直奉行“沒有最好的架構(gòu),只有最合適的架構(gòu)”的宗旨,面對(duì)
    的頭像 發(fā)表于 09-01 14:51 ?404次閱讀
    百度<b class='flag-5'>垂</b><b class='flag-5'>類</b>離線計(jì)算系統(tǒng)的演進(jìn)過程 百度<b class='flag-5'>垂</b><b class='flag-5'>類</b>離線計(jì)算系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    導(dǎo)線弧大小標(biāo)準(zhǔn)如何定?輸電線路弧監(jiān)測(cè)裝置檢測(cè)弧超簡(jiǎn)單!

    今天,風(fēng)河智能帶大家來了解輸電線路導(dǎo)線弧大小的標(biāo)準(zhǔn)以及弧在線監(jiān)測(cè)裝置的使用方法。 引言:架空輸電線路是一種常見的輸電方式,利用桿塔將導(dǎo)線架設(shè)于高空,線路長(zhǎng)達(dá)幾百上千公里,導(dǎo)線懸掛在立桿之間會(huì)產(chǎn)生
    的頭像 發(fā)表于 01-12 09:14 ?1279次閱讀

    輸電線路弧變化的原因及弧在線監(jiān)測(cè)裝置的工作原理

    導(dǎo)線弧變大可能會(huì)導(dǎo)致導(dǎo)線之間相互碰撞、線下安全距離不夠等,進(jìn)而引發(fā)短路或安全事故,鼎信輸電線路弧在線監(jiān)測(cè)裝置DX-WPS100-HC是一種高科技弧監(jiān)測(cè)設(shè)備,通過安裝在導(dǎo)線上的弧
    的頭像 發(fā)表于 01-17 09:19 ?1079次閱讀

    鴻蒙開發(fā)用什么語言?

    Java的,從API8開始,只能用Arkts,js或著C++開發(fā)了,我們這篇文章重點(diǎn)講下應(yīng)用級(jí)別的開發(fā)鴻蒙應(yīng)用開發(fā) 和安卓應(yīng)用和IOS應(yīng)用開發(fā)
    的頭像 發(fā)表于 01-30 16:12 ?1253次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>用什么語言?

    使用 Taro 開發(fā)鴻蒙原生應(yīng)用 —— 快速上手,鴻蒙應(yīng)用開發(fā)指南

    隨著鴻蒙系統(tǒng)的不斷完善,許多應(yīng)用廠商都希望將自己的應(yīng)用移植到鴻蒙平臺(tái)上。最近,Taro 發(fā)布了 v4.0.0-beta.x 版本,支持使用 Taro 快速開發(fā)鴻蒙原生應(yīng)用,也可將現(xiàn)有的
    的頭像 發(fā)表于 02-02 16:09 ?694次閱讀
    使用 Taro <b class='flag-5'>開發(fā)</b><b class='flag-5'>鴻蒙</b>原生應(yīng)用 —— 快速上手,<b class='flag-5'>鴻蒙</b>應(yīng)用<b class='flag-5'>開發(fā)</b>指南

    鴻蒙APP開發(fā)實(shí)戰(zhàn):【Api9】拍照、拍視頻;選擇圖片、視頻、文件工具

    鴻蒙開發(fā)過程中,經(jīng)常會(huì)進(jìn)行系統(tǒng)調(diào)用,拍照、拍視頻、選擇圖庫(kù)圖片、選擇圖庫(kù)視頻、選擇文件。今天就給大家分享一個(gè)工具。
    的頭像 發(fā)表于 03-26 16:27 ?623次閱讀
    <b class='flag-5'>鴻蒙</b>APP<b class='flag-5'>開發(fā)</b>實(shí)戰(zhàn):【Api9】拍照、拍視頻;選擇圖片、視頻、文件工具<b class='flag-5'>類</b>