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

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

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

OpenHarmony如何啟動(dòng)FA(本地和遠(yuǎn)程)

ArkUI詳解 ? 來源:鴻蒙實(shí)驗(yàn)室 ? 作者:鴻蒙實(shí)驗(yàn)室 ? 2022-07-02 13:41 ? 次閱讀

大家好,今天我們來一起學(xué)習(xí)分布式相關(guān)的內(nèi)容,其實(shí)對于分布式任務(wù)調(diào)度,就是對數(shù)據(jù)管理的另一種形式

啟動(dòng)本地設(shè)備FA

首先創(chuàng)建一個(gè)項(xiàng)目

如圖所示:

poYBAGK_2nSAJIoQAAH2eQ8Zgm0872.png

點(diǎn)擊finish即可

然后我們接下來先進(jìn)行一些基礎(chǔ)設(shè)置

我們要在DAYU200開發(fā)板上運(yùn)行這個(gè)實(shí)例,所以要做一個(gè)簽名設(shè)置

點(diǎn)擊File--- Project Struct,

pYYBAGK_2naAM15EAAHq13OeHQc987.png

然后點(diǎn)擊Signing Configs 完成簽名設(shè)置

poYBAGK_2nmACjC0AAJyAsgyAZE630.png

點(diǎn)擊ok就會(huì)完成自動(dòng)簽名。到了這兒,我們的第一步也算是完成了,接下來我們看一下下一步如何操作

回到我們今天的主題,我們是要啟動(dòng)本地的另一個(gè)FA,但是目前只有一個(gè),所以我們這個(gè)時(shí)候需要再創(chuàng)建一個(gè)

在entry模塊依次點(diǎn)擊New-Ability-PageAbility,就可以創(chuàng)建另一個(gè)FA,我們命名為SecondAbility

pYYBAGK_2n6AZZmeAAUQUCXfP7g810.png

poYBAGK_2n-AS2SEAADeHNUv5zc606.png

如下圖所示,我們已經(jīng)創(chuàng)建成功

pYYBAGK_2oCAb44AAAEIV_W2xw0369.png

修改SecondAbility中的默認(rèn)message

@State message: string = 'SecondAbility'

?

到這兒我們的第二步就算完成了

由于我們啟動(dòng)的是本地的FA,后邊為了區(qū)別啟動(dòng)遠(yuǎn)程FA,所以我們需要對文件進(jìn)行一個(gè)重命名,這樣方便我們認(rèn)識。

我們點(diǎn)擊MainAbility‘中的index.ets,右擊進(jìn)行重命名

poYBAGK_2oGAAHjzAACNUJNy1Q4451.png

完成以上的步驟,編輯器會(huì)幫助我們對onfig.json中對項(xiàng)目進(jìn)行重構(gòu)

{

"app"

: {

"vendor"

:

"example"

,

"bundleName"

:

"com.jianguo.openharmony"

,

"version"

: {

"code"

:

1000000

,

"name"

:

"1.0.0"

}

},

"deviceConfig"

: {},

"module"

: {

"mainAbility"

:

".MainAbility"

,

"deviceType"

: [

"phone"

,

"tablet"

],

"abilities"

: [

{

"skills"

: [

{

"entities"

: [

"entity.system.home"

],

"actions"

: [

"action.system.home"

]

}

],

"orientation"

:

"unspecified"

,

"visible"

:

true

,

"srcPath"

:

"MainAbility"

,

"name"

:

".MainAbility"

,

"srcLanguage"

:

"ets"

,

"icon"

:

"$media:icon"

,

"description"

:

"$string:MainAbility_desc"

,

"formsEnabled"

:

false

,

"label"

:

"$string:MainAbility_label"

,

"type"

:

"page"

,

"launchType"

:

"standard"

},

{

"orientation"

:

"unspecified"

,

"srcPath"

:

"SecondAbility"

,

"name"

:

".SecondAbility"

,

"srcLanguage"

:

"ets"

,

"icon"

:

"$media:icon"

,

"description"

:

"$string:SecondAbility_desc"

,

"formsEnabled"

:

false

,

"label"

:

"$string:SecondAbility_label"

,

"type"

:

"page"

,

"launchType"

:

"standard"

}

],

"distro"

: {

"moduleType"

:

"entry"

,

"installationFree"

:

false

,

"deliveryWithInstall"

:

true

,

"moduleName"

:

"entry"

},

"package"

:

"com.example.entry"

,

"srcPath"

:

""

,

"name"

:

".entry"

,

"js"

: [

{

"mode"

: {

"syntax"

:

"ets"

,

"type"

:

"pageAbility"

},

"pages"

: [

"pages/start_local_fa"

],

"name"

:

".MainAbility"

,

"window"

: {

"designWidth"

:

720

,

"autoDesignWidth"

:

false

}

},

{

"mode"

: {

"syntax"

:

"ets"

,

"type"

:

"pageAbility"

},

"pages"

: [

"pages/index"

],

"name"

:

".SecondAbility"

,

"window"

: {

"designWidth"

:

720

,

"autoDesignWidth"

:

false

}

}

]

}

}

接下來我們就看一下最關(guān)鍵的一步,如何啟動(dòng)本地FA

我們可以利用一個(gè)button按鈕來對其進(jìn)行跳操作

最主要的就是onclick里面的事件

如下圖所示:

使用的時(shí)候注意導(dǎo)入包:

import featureAbiltty from '@ohos.ability.featureAbility'

featureAbiltty.startAbility({

want:

{

//設(shè)備Id,本機(jī)默認(rèn)為空

deviceId:"",

//app名稱,在config.json的bundleName

bundleName:"com.jianguo.openharmony",

//頁面名稱,注意包名

abilityName:"com.example.entry.SecondAbility"

?

?

}

然后我對上面的

deviceId:進(jìn)行說明本機(jī)默認(rèn)為空,

bundleName:在config.json的bundleName

abilityName:頁面名稱,注意包名

pYYBAGK_2oKABSuCAACnuqAvp5U058.png

然后我們在DATU20運(yùn)行

發(fā)現(xiàn)可以跳轉(zhuǎn),那么我們就實(shí)現(xiàn)了這個(gè)功能

跨設(shè)備啟動(dòng)FAs

接下來我們看一下如何啟動(dòng)遠(yuǎn)程的deviceId

在這之前,我們需要做的事就是,在config.json配置權(quán)限

非敏感權(quán)限在這兒定義就好,如果是敏感權(quán)限,就要在運(yùn)行時(shí)發(fā)送彈窗的形式去處理。

"reqPermissions": [

{

"name": "ohos.permission.DISTRIBUTED_DATASYNC"

}

]

poYBAGK_2oOAef7iAACDFjmNyYs309.png

遠(yuǎn)程啟動(dòng)注意點(diǎn):

權(quán)限deviceId

動(dòng)態(tài)申請權(quán)限

//設(shè)備管理器

import deviceMAnager from'@ohos.distributedHardware.deviceManager'

import featureAbilty from '@ohos.ability.featureAbility'

//設(shè)備管理器

import deviceMAnager from '@ohos.distributedHardware.deviceManager'

//遠(yuǎn)端app信息

import bundle from '@ohos.bundle';

import abilityAccessCtrl from '@ohos.abilityAccessCtrl';

?

//動(dòng)態(tài)申請權(quán)限,彈窗的形式,可以通用,注意修改兩個(gè)地方,一個(gè)是包名,一個(gè)是權(quán)限列表

async function requestPermision() {

let array: Array = ["ohos.permission.DISTRIBUTED_DATASYNC"]

?

const appInfo = await bundle.getApplicationInfo("com.jianguo.openharmony", 0, 100)

let tolenId = appInfo.accessTokenId;

const atManger = abilityAccessCtrl.createAtManager();

let requestPressions: Array = []

//遍歷權(quán)限是否通過

for (let i = 0;i < array.length; i++) {

let result = await atManger.verifyAccessToken(tolenId, array[i]);

if (result != abilityAccessCtrl.GrantStatus.PERMISSION_DENIED) {

requestPressions.push(array[i]);

}

}

if (requestPressions.length == 0 || requestPressions == []) {

return;

?

}

?

let context = featureAbilty.getContext();

context.requestPermissionsFromUser(requestPressions, 1, (data) => {

?

console.info("XXXXXX data" + JSON.stringify(data))

})

}

?

@Entry

@Component

struct Index {

@State message: string = 'MainAbility'

?

aboutToAppear() {

//頁面即將顯示的時(shí)候處理,運(yùn)行時(shí)發(fā)送彈窗的形式去處理

requestPermision();

?

?

}

?

build() {

Row() {

Column() {

Text(this.message)

.fontSize(50)

.fontWeight(FontWeight.Bold)

Button("跳轉(zhuǎn)遠(yuǎn)程SecondAbility", {

type: ButtonType.Capsule

}).backgroundColor(Color.Orange).onClick((event: ClickEvent) => {

?

?

deviceMAnager.createDeviceManager("com.jianguo.openharmony", (err, value) => {

?

?

if (!err) {

let devManager = value;

//同步方式獲得可信任列表

let deviceList = devManager.getTrustedDeviceListSync();

featureAbilty.startAbility({

want:

{

//設(shè)備Id,本機(jī)默認(rèn)為空,這里只有兩臺設(shè)備,所以用數(shù)組[0]表示

deviceId: deviceList[0].deviceId,

//app名稱,在config.json的bundleName

bundleName: "com.jianguo.openharmony",

//頁面名稱,注意包名

abilityName: "com.example.entry.SecondAbility"

?

?

}

}).then((value) => {

?

console.log("Succes Data" + JSON.stringify(value))

}).catch((error) => {

console.log("failed Data" + JSON.stringify(error))

})

}

})

?

?

}).width(199)

}

.width('100%')

}

.height('100%')

}

}

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

    關(guān)注

    79

    文章

    1979

    瀏覽量

    30278
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3727

    瀏覽量

    16389
收藏 人收藏

    評論

    相關(guān)推薦

    Git命令之本地分支與遠(yuǎn)程分支關(guān)聯(lián)和解除

    在實(shí)際的工作生活中,往往需要將本地的分支和遠(yuǎn)程分支關(guān)聯(lián),這樣我們就可以使用git pull命令來更新拉取最新的代碼,并使用git push命令將自己本地的修改推送到遠(yuǎn)程倉庫。但是如果此
    的頭像 發(fā)表于 12-15 09:27 ?3284次閱讀
    Git命令之<b class='flag-5'>本地</b>分支與<b class='flag-5'>遠(yuǎn)程</b>分支關(guān)聯(lián)和解除

    本地LabVIEW訪問遠(yuǎn)程mysql

    之前只做過LabVIEW對本地計(jì)算機(jī)ACCESS和SQL SERVER的訪問,使用的是LabSQL工具,OLEDB方式,不創(chuàng)建DSN,直接寫入連接字符串然后SQL語句對本地數(shù)據(jù)庫進(jìn)行操作,對遠(yuǎn)程
    發(fā)表于 12-15 14:38

    HarmonyOS教程一基于分布式調(diào)度的能力,實(shí)現(xiàn)遠(yuǎn)程FA啟動(dòng)

    1. 介紹開發(fā)者在應(yīng)用中集成分布式調(diào)度能力,通過調(diào)用指定能力的分布式接口,實(shí)現(xiàn)跨設(shè)備能力調(diào)度。根據(jù)Ability模板及意圖的不同,分布式任務(wù)調(diào)度向開發(fā)者提供六種能力:啟動(dòng)遠(yuǎn)程FA(Feature
    發(fā)表于 09-10 10:07

    OpenHarmony JS在啟動(dòng)DevEco Studio的遠(yuǎn)程模擬器時(shí),出現(xiàn)HDC異常怎么解決

    最近在研究OpenHarmony的JS應(yīng)用開發(fā),在調(diào)試應(yīng)用時(shí),在啟動(dòng)DevEco Studio的遠(yuǎn)程模擬器時(shí),出現(xiàn)HDC異常問題;然而SDK中的toolchains目錄下面擁有hdc程序
    發(fā)表于 04-08 11:27

    DevEco Studio中的真機(jī)無法啟動(dòng)遠(yuǎn)程FA怎么解決?

    根據(jù)Codelabs中的“( 基于分布式調(diào)度啟動(dòng)遠(yuǎn)程FA )”實(shí)驗(yàn),在DevEcoStudio中的遠(yuǎn)程模擬器中可正常啟動(dòng)另一臺手機(jī)中的
    發(fā)表于 05-09 11:58

    OpenHarmony開發(fā)之Ability架構(gòu)

    的線程。每個(gè)Ability綁定一個(gè)獨(dú)立的JSRuntime實(shí)例,因此Ability之間是隔離的。相關(guān)實(shí)例針對Ability開發(fā),有以下相關(guān)實(shí)例可供參考:[分布式調(diào)度啟動(dòng)遠(yuǎn)程FA][分布式新聞客戶端
    發(fā)表于 05-12 15:12

    OpenHarmony3.1release連接服務(wù)失敗是為什么?怎么解決?

    (serviceAbility)可以正常連接;2、使用JS寫的本地service就無法正常連接測試過以下幾種情況,1、使用JS寫的FA上點(diǎn)擊按鈕連接本地service失?。?、使用JS寫的FA
    發(fā)表于 06-01 11:35

    請問openharmony應(yīng)用必須使用開發(fā)板才能運(yùn)行嗎?

    openharmony應(yīng)用必須使用開發(fā)板才能運(yùn)行嗎?本地模擬器或者遠(yuǎn)程模擬器什么時(shí)候會(huì)出來?harmonyos真機(jī)以后會(huì)兼容openharmony應(yīng)用嗎?
    發(fā)表于 06-14 11:13

    OpenHarmony分布式調(diào)度啟動(dòng)遠(yuǎn)程FA之路

    1.介紹OpenHarmony提供了分布式能力,能夠?qū)崿F(xiàn)在同一網(wǎng)絡(luò)下對遠(yuǎn)程設(shè)備Ability的拉起。本篇Codelab,我們將一起開啟OpenHarmony分布式調(diào)度啟動(dòng)
    發(fā)表于 07-26 14:59

    HarmonyOS/OpenHarmony應(yīng)用開發(fā)-FA卡片開發(fā)體驗(yàn)

    :HarmonyOSOpenHarmony應(yīng)用開發(fā)-FA卡片開發(fā)體驗(yàn).docx示例代碼:https://gitee.com/jltfcloudcn/jump_to/tree/master/FA
    發(fā)表于 12-06 14:48

    HarmonyOS/OpenHarmony應(yīng)用開發(fā)-FA模型綜述

    /documentation/doc-guides/fa-brief-0000001333640861*附件:HarmonyOSOpenHarmony應(yīng)用開發(fā)-FA模型綜述.docx
    發(fā)表于 12-07 10:39

    Linux平臺智能家居的本地監(jiān)控與遠(yuǎn)程監(jiān)控

    Linux平臺智能家居的本地監(jiān)控與遠(yuǎn)程監(jiān)控
    發(fā)表于 10-26 08:24 ?14次下載
    Linux平臺智能家居的<b class='flag-5'>本地</b>監(jiān)控與<b class='flag-5'>遠(yuǎn)程</b>監(jiān)控

    鴻蒙開發(fā):啟動(dòng)本地PageAbility

    PageAbility相關(guān)的能力通過featureAbility提供,啟動(dòng)本地Ability通過featureAbility中的startAbility接口實(shí)現(xiàn)。
    的頭像 發(fā)表于 06-18 09:29 ?304次閱讀
    鴻蒙開發(fā):<b class='flag-5'>啟動(dòng)</b><b class='flag-5'>本地</b>PageAbility

    鴻蒙開發(fā)Ability Kit程序框架服務(wù):FA模型啟動(dòng)Stage模型UIAbility

    本文介紹FA模型的三種應(yīng)用組件如何啟動(dòng)Stage模型的UIAbility組件。
    的頭像 發(fā)表于 06-25 16:00 ?379次閱讀
    鴻蒙開發(fā)Ability Kit程序框架服務(wù):<b class='flag-5'>FA</b>模型<b class='flag-5'>啟動(dòng)</b>Stage模型UIAbility

    鴻蒙開發(fā)Ability Kit程序框架服務(wù):Stage模型啟動(dòng)FA模型PageAbility

    本小節(jié)介紹Stage模型的兩種應(yīng)用組件如何啟動(dòng)FA模型的PageAbility組件。
    的頭像 發(fā)表于 06-26 09:50 ?378次閱讀
    鴻蒙開發(fā)Ability Kit程序框架服務(wù):Stage模型<b class='flag-5'>啟動(dòng)</b><b class='flag-5'>FA</b>模型PageAbility