通過(guò)startAbilityByType拉起垂類應(yīng)用
使用場(chǎng)景
開(kāi)發(fā)者可通過(guò)特定的業(yè)務(wù)類型如導(dǎo)航、金融等,調(diào)用startAbilityByType接口拉起對(duì)應(yīng)的垂域面板,該面板將展示目標(biāo)方接入的垂域應(yīng)用,由用戶選擇打開(kāi)指定應(yīng)用以實(shí)現(xiàn)相應(yīng)的垂類意圖。垂域面板為調(diào)用方提供統(tǒng)一的安全、可信的目標(biāo)方應(yīng)用,同時(shí)降低調(diào)用方的接入成本。
約束限制
設(shè)備限制 HarmonyOS NEXT Developer Preview0及以上版本的設(shè)備
接口說(shuō)明
接口startAbilityByType11+ 是[UIAbilityContext]和[UIExtensionContentSession]提供的支持基于垂域業(yè)務(wù)類型拉起垂域面板,調(diào)用方通過(guò)指定特定的垂域業(yè)務(wù)類型即可拉起對(duì)應(yīng)的垂域面板,在垂域面板上將展示目標(biāo)方接入的垂域應(yīng)用。
type為navigation導(dǎo)航對(duì)應(yīng)的wantParam:
屬性名稱 | 含義 | 數(shù)據(jù)類型 | 是否缺省 |
---|---|---|---|
destinationLatitude | 終點(diǎn)緯度GCJ-02 | number | sceneType=1或2時(shí)不可缺省 |
destinationLongitude | 終點(diǎn)經(jīng)度GCJ-02 | number | sceneType=1或2時(shí)不可缺省 |
sceneType | 意圖取值 :1:路線規(guī)劃 2:導(dǎo)航 3: 地點(diǎn)搜索 | number | 可缺省,缺省時(shí)默認(rèn)為1 |
destinationName | 終點(diǎn)名稱 | string | sceneType=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)用方接入步驟
- 導(dǎo)入ohos.app.ability.common模塊。
import common from '@ohos.app.ability.common';
- 構(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)方接入步驟
導(dǎo)入ohos.app.ability.UIAbility模塊。
import UIAbility from '@ohos.app.ability.UIAbility';
在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)用支持位置搜索功能 } ] } ] } ] }
解析參數(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-02 number sceneType=1或2時(shí)不可缺省 destinationLongitude 終點(diǎn)經(jīng)度GCJ-02 number sceneType=1或2時(shí)不可缺省 destinationName 終點(diǎn)名稱 string sceneType=3時(shí)不可缺省 originName 起點(diǎn)名稱 string 可缺省,存在時(shí)可用于展示路線規(guī)劃頁(yè)面 originLatitude 起點(diǎn)緯度GCJ-02 number 可缺省,存在時(shí)可用于展示路線規(guī)劃頁(yè)面 originLongitude 起點(diǎn)經(jīng)度GCJ-02 number 可缺省,存在時(shí)可用于展示路線規(guī)劃頁(yè)面 vehicleType 交通出行工具:0:駕車 1:步行 2:騎行 3:公交(路線規(guī)劃場(chǎng)景有效) number 可缺省,缺省時(shí)由應(yīng)用自行處理 應(yīng)用可根據(jù)[linkFeature]中定義的特性功能,比如路線規(guī)劃和導(dǎo)航結(jié)合接收到的參數(shù)開(kāi)發(fā)不同的樣式頁(yè)面。
示例:
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);
}
}
}
審核編輯 黃宇
-
接口
+關(guān)注
關(guān)注
33文章
8615瀏覽量
151306 -
鴻蒙
+關(guān)注
關(guān)注
57文章
2363瀏覽量
42885
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論