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

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

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

鴻蒙開發(fā)接口Ability框架:【ServiceExtensionContext】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-05-20 16:26 ? 次閱讀

ServiceExtensionContext

ServiceExtensionContext模塊是ServiceExtension的上下文環(huán)境,繼承自ExtensionContext。

ServiceExtensionContext模塊提供ServiceExtension具有的能力和接口,包括啟動(dòng)、停止、綁定、解綁Ability。

說明:
開發(fā)前請(qǐng)熟悉鴻蒙開發(fā)指導(dǎo)文檔:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]
本模塊首批接口從API version 9開始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨(dú)標(biāo)記接口的起始版本。
本模塊接口僅可在Stage模型下使用。

使用說明

ServiceExtensionContext模塊是ServiceExtension的上下文環(huán)境,繼承自ExtensionContext。

屬性

系統(tǒng)能力 :SystemCapability.Ability.AbilityRuntime.Core

名稱參數(shù)類型可讀可寫說明
extensionAbilityInfo[ExtensionAbilityInfo]服務(wù)擴(kuò)展信息。

startAbility

startAbility(want: Want, callback: AsyncCallback): void;

啟動(dòng)Ability。

系統(tǒng)能力 :SystemCapability.Ability.AbilityRuntime.Core

系統(tǒng)API : 此接口為系統(tǒng)接口,三方應(yīng)用不支持調(diào)用。

參數(shù):

參數(shù)名類型必填說明
want[Want]Want類型參數(shù),傳入需要啟動(dòng)的ability的信息,如ability名稱,包名等。
callbackAsyncCallback回調(diào)函數(shù),返回接口調(diào)用是否成功的結(jié)果。

示例:

import ExtensionContext from '@ohos.application.ServiceExtensionAbility';
class MainAbility extends ExtensionContext {
    onWindowStageCreate(windowStage) {
        let want = {
            "bundleName": "com.example.myapp",
            "abilityName": "MyAbility"};
        this.context.startAbility(want, (err) = > {
        console.log('startAbility result:' + JSON.stringify(err));
        });
    }
}

startAbility

startAbility(want: Want, options?: StartOptions): Promise;

啟動(dòng)Ability。通過Promise返回結(jié)果。

系統(tǒng)能力 :SystemCapability.Ability.AbilityRuntime.Core

系統(tǒng)API : 此接口為系統(tǒng)接口,三方應(yīng)用不支持調(diào)用。

參數(shù):

參數(shù)名類型必填說明
want[Want]Want類型參數(shù),傳入需要啟動(dòng)的ability的信息,如ability名稱,包名等。
options[StartOptions]啟動(dòng)Ability所攜帶的參數(shù)。

返回值:

類型說明
Promise返回一個(gè)Promise,包含接口的結(jié)果。

示例:

import ExtensionContext from '@ohos.application.ServiceExtensionAbility';
  class MainAbility extends ExtensionContext {
      onWindowStageCreate(windowStage) {
          let want = {
          "bundleName": "com.example.myapp",
          "abilityName": "MyAbility"
          };
      this.context.startAbility(want).then((data) = > {
          console.log('success:' + JSON.stringify(data));
      }).catch((error) = > {
          console.log('failed:' + JSON.stringify(error));
      });
      }
  }

startAbility

startAbility(want: Want, options: StartOptions, callback: AsyncCallback): void

啟動(dòng)Ability。

系統(tǒng)能力 :SystemCapability.Ability.AbilityRuntime.Core

系統(tǒng)API : 此接口為系統(tǒng)接口,三方應(yīng)用不支持調(diào)用。

參數(shù):

參數(shù)名類型必填說明
want[Want]啟動(dòng)Ability的want信息。
options[StartOptions]啟動(dòng)Ability所攜帶的參數(shù)。
callbackAsyncCallbackcallback形式返回啟動(dòng)結(jié)果。

示例:

var want = {
	"deviceId": "",
	"bundleName": "com.extreme.test",
	"abilityName": "MainAbility"
};
var options = {
	windowMode: 0,
};
this.context.startAbility(want, options, (error) = > {
    console.log("error.code = " + error.code)
})

ServiceExtensionContext.startAbilityWithAccount

startAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback): void;

根據(jù)account啟動(dòng)Ability(callback形式)。

系統(tǒng)能力 :SystemCapability.Ability.AbilityRuntime.Core

系統(tǒng)API : 此接口為系統(tǒng)接口,三方應(yīng)用不支持調(diào)用。

參數(shù):

參數(shù)名類型必填說明
want[Want]啟動(dòng)Ability的want信息。
accountIdnumber需要啟動(dòng)的accountId。
callbackAsyncCallback啟動(dòng)Ability的回調(diào)函數(shù)。

示例:

var want = {
  "deviceId": "",
  "bundleName": "com.extreme.test",
  "abilityName": "MainAbility"
};
var accountId = 100;
this.context.startAbilityWithAccount(want, accountId, (err) = > {
  console.log('---------- startAbilityWithAccount fail, err:  -----------', err);
});

ServiceExtensionContext.startAbilityWithAccount

startAbilityWithAccount(want: Want, accountId: number, options: StartOptions, callback: AsyncCallback): void;

根據(jù)account啟動(dòng)Ability(callback形式)。

系統(tǒng)能力 :SystemCapability.Ability.AbilityRuntime.Core

系統(tǒng)API : 此接口為系統(tǒng)接口,三方應(yīng)用不支持調(diào)用。

參數(shù):

參數(shù)名類型必填說明
want[Want]啟動(dòng)Ability的want信息。
accountIdnumber需要啟動(dòng)的accountId。
options[StartOptions]啟動(dòng)Ability所攜帶的參數(shù)。
callbackAsyncCallback啟動(dòng)Ability的回調(diào)函數(shù)。

示例:

var want = {
  "deviceId": "",
  "bundleName": "com.extreme.test",
  "abilityName": "MainAbility"
};
var accountId = 100;
var options = {
  windowMode: 0,
};
this.context.startAbilityWithAccount(want, accountId, options, (err) = > {
  console.log('---------- startAbilityWithAccount fail, err:  -----------', err);
});

ServiceExtensionContext.startAbilityWithAccount

startAbilityWithAccount(want: Want, accountId: number, options?: StartOptions): Promise;

根據(jù)account啟動(dòng)Ability(Promise形式)。

系統(tǒng)能力 :SystemCapability.Ability.AbilityRuntime.Core

系統(tǒng)API : 此接口為系統(tǒng)接口,三方應(yīng)用不支持調(diào)用。

參數(shù):

參數(shù)名類型必填說明
want[Want]啟動(dòng)Ability的want信息。
accountIdnumber需要啟動(dòng)的accountId。
options[StartOptions]啟動(dòng)Ability所攜帶的參數(shù)。

示例:

var want = {
  "deviceId": "",
  "bundleName": "com.extreme.test",
  "abilityName": "MainAbility"
};
var accountId = 100;
var options = {
  windowMode: 0,
};
this.context.startAbilityWithAccount(want, accountId, options)
  .then((data) = > {
      console.log('---------- startAbilityWithAccount success, data:  -----------', data);
  })
  .catch((err) = > {
      console.log('---------- startAbilityWithAccount fail, err:  -----------', err);
  })

ServiceExtensionContext.terminateSelf

terminateSelf(callback: AsyncCallback): void;

停止Ability自身。

系統(tǒng)能力 :SystemCapability.Ability.AbilityRuntime.Core

系統(tǒng)API : 此接口為系統(tǒng)接口,三方應(yīng)用不支持調(diào)用。

參數(shù):

參數(shù)名類型必填說明
callbackAsyncCallback回調(diào)函數(shù),返回接口調(diào)用是否成功的結(jié)果。

示例:

import ExtensionContext from '@ohos.application.ServiceExtensionAbility';
      class MainAbility extends ExtensionContext {
          onWindowStageCreate(windowStage) {
          this.context.terminateSelf((err) = > {
            console.log('terminateSelf result:' + JSON.stringify(err));
          });
          }
      }

ServiceExtensionContext.terminateSelf

terminateSelf(): Promise;

停止自身。通過Promise返回結(jié)果。

系統(tǒng)能力 :SystemCapability.Ability.AbilityRuntime.Core

系統(tǒng)API : 此接口為系統(tǒng)接口,三方應(yīng)用不支持調(diào)用。

返回值:

類型說明
Promise返回一個(gè)Promise,包含接口的結(jié)果。

示例:

import ExtensionContext from '@ohos.application.ServiceExtensionAbility';
  class MainAbility extends ExtensionContext {
  onWindowStageCreate(windowStage) {
    this.context.terminateSelf().then((data) = > {
      console.log('success:' + JSON.stringify(data));
    }).catch((error) = > {
      console.log('failed:' + JSON.stringify(error));
    });
  }
}

ServiceExtensionContext.connectAbility

connectAbility(want: Want, options: ConnectOptions): number;

將一個(gè)Ability與服務(wù)類型的Ability綁定。

系統(tǒng)能力 :SystemCapability.Ability.AbilityRuntime.Core

系統(tǒng)API : 此接口為系統(tǒng)接口,三方應(yīng)用不支持調(diào)用。

參數(shù):

參數(shù)名類型必填說明
want[Want]Want類型參數(shù),傳入需要啟動(dòng)的ability的信息,如ability名稱,包名等。
options[ConnectOptions]ConnectOptions類型的回調(diào)函數(shù),返回服務(wù)連接成功、斷開或連接失敗后的信息。

返回值:

類型說明
number返回一個(gè)number,后續(xù)根據(jù)這個(gè)number去斷開連接。

示例:

let want = {
    "bundleName": "com.example.myapp",
    "abilityName": "MyAbility"
};
let options = {
    onConnect: function(elementName, proxy) {},
    onDisConnect: function(elementName) {},
    onFailed: function(code) {}
}
let connection = this.context.connectAbility(want,options);

ServiceExtensionContext.connectAbilityWithAccount

connectAbilityWithAccount(want: Want, accountId: number, options: ConnectOptions): number;

使用AbilityInfo.AbilityType.SERVICE模板和account將當(dāng)前能力連接到一個(gè)能力。

系統(tǒng)能力 :SystemCapability.Ability.AbilityRuntime.Core

系統(tǒng)API : 此接口為系統(tǒng)接口,三方應(yīng)用不支持調(diào)用。

參數(shù):

參數(shù)名類型必填說明
want[Want]啟動(dòng)Ability的want信息。
accountIdnumber需要啟動(dòng)的accountId。
optionsConnectOptions遠(yuǎn)端對(duì)象實(shí)例。

返回值:

類型說明
number返回Ability連接的結(jié)果code。

示例:

var want = {
  "deviceId": "",
  "bundleName": "com.extreme.test",
  "abilityName": "MainAbility"
};
var accountId = 100;
var options = {
  onConnect(elementName, remote) { console.log('----------- onConnect -----------') },
  onDisconnect(elementName) { console.log('----------- onDisconnect -----------') },
  onFailed(code) { console.log('----------- onFailed -----------') }
}
const result = this.context.connectAbilityWithAccount(want, accountId, options);
console.log('----------- connectAbilityResult: ------------', result);

ServiceExtensionContext.disconnectAbility

disconnectAbility(connection: number, callback:AsyncCallback): void;

將一個(gè)Ability與綁定的服務(wù)類型的Ability解綁。

系統(tǒng)能力 :SystemCapability.Ability.AbilityRuntime.Core

系統(tǒng)API : 此接口為系統(tǒng)接口,三方應(yīng)用不支持調(diào)用。

參數(shù):

參數(shù)名類型必填說明
connectionnumber在connectAbility中返回的number。
callbackAsyncCallback回調(diào)函數(shù),返回接口調(diào)用是否成功的結(jié)果。

示例:

import ExtensionContext from '@ohos.application.ServiceExtensionAbility';
  class MainAbility extends ExtensionContext {
  onWindowStageCreate(windowStage) {
    let connection=1
    this.context.disconnectAbility(connection, (err) = > { 
      // connection為connectAbility中的返回值
      console.log('terminateSelf result:' + JSON.stringify(err));
    });
  }
}

ServiceExtensionContext.disconnectAbility

disconnectAbility(connection: number): Promise;

將一個(gè)Ability與綁定的服務(wù)類型的Ability解綁。通過Promise返回結(jié)果。

系統(tǒng)能力 :SystemCapability.Ability.AbilityRuntime.Core

系統(tǒng)API : 此接口為系統(tǒng)接口,三方應(yīng)用不支持調(diào)用。

參數(shù):

參數(shù)名類型必填說明
connectionnumber在connectAbility中返回的number。

返回值:

類型說明HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789是v直接拿
Promise返回一個(gè)Promise,包含接口的結(jié)果。

搜狗高速瀏覽器截圖20240326151344.png
示例:

import ExtensionContext from '@ohos.application.ServiceExtensionAbility';
class MainAbility extends ExtensionContext {
  onWindowStageCreate(windowStage) {
    let connection=1
    this.context.disconnectAbility(connection).then((data) = > { // connection為connectAbility中的返回值
    console.log('success:' + JSON.stringify(data));
    }).catch((error) = > {
    console.log('failed:' + JSON.stringify(error));
    });
  }
}

審核編輯 黃宇

聲明:本文內(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

    文章

    8598

    瀏覽量

    151163
  • 框架
    +關(guān)注

    關(guān)注

    0

    文章

    403

    瀏覽量

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

    關(guān)注

    57

    文章

    2352

    瀏覽量

    42859
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙開發(fā)接口Ability框架:【@ohos.application.Ability (Ability)】

    Ability模塊提供對(duì)Ability生命周期、上下文環(huán)境等調(diào)用管理的能力,包括Ability創(chuàng)建、銷毀、轉(zhuǎn)儲(chǔ)客戶端信息等。
    的頭像 發(fā)表于 04-30 17:42 ?2267次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>接口</b><b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【@ohos.application.<b class='flag-5'>Ability</b> (<b class='flag-5'>Ability</b>)】

    鴻蒙開發(fā)接口Ability框架:【@ohos.ability.featureAbility (FeatureAbility模塊)】

    FeatureAbility模塊提供帶有UI設(shè)計(jì)與用戶交互的能力,包括啟動(dòng)新的ability、獲取dataAbilityHelper、設(shè)置此Page Ability、獲取當(dāng)前Ability對(duì)應(yīng)的窗口,連接服務(wù)等。
    的頭像 發(fā)表于 05-06 16:31 ?1003次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>接口</b><b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【@ohos.<b class='flag-5'>ability</b>.featureAbility (FeatureAbility模塊)】

    鴻蒙開發(fā)接口Ability框架:【@ohos.application.missionManager (missionManager)】

    表示Ability對(duì)應(yīng)任務(wù)信息的枚舉。
    的頭像 發(fā)表于 05-08 09:19 ?901次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>接口</b><b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【@ohos.application.missionManager (missionManager)】

    鴻蒙開發(fā)接口Ability框架:【@ohos.ability.particleAbility (particleAbility模塊)】

    particleAbility模塊提供了Service類型Ability的能力,包括啟動(dòng)、停止指定的particleAbility,獲取dataAbilityHelper,連接、斷開當(dāng)前Ability與指定ServiceAbility等。
    的頭像 發(fā)表于 05-09 10:21 ?719次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>接口</b><b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【@ohos.<b class='flag-5'>ability</b>.particleAbility (particleAbility模塊)】

    鴻蒙開發(fā)接口Ability框架:【 (Context模塊)】

    Context模塊提供了ability或application的上下文的能力,包括允許訪問特定于應(yīng)用程序的資源、請(qǐng)求和驗(yàn)證權(quán)限等。
    的頭像 發(fā)表于 05-13 16:04 ?719次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>接口</b><b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【 (Context模塊)】

    鴻蒙開發(fā)接口Ability框架:【(AbilityContext)】

    AbilityContext是Ability的上下文環(huán)境,繼承自Context。
    的頭像 發(fā)表于 05-13 09:26 ?1017次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>接口</b><b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【(AbilityContext)】

    鴻蒙開發(fā)接口Ability框架:【(AbilityDelegator)】

    AbilityDelegator提供添加用于監(jiān)視指定能力的生命周期狀態(tài)更改的AbilityMonitor對(duì)象的能力,包括對(duì)AbilityMonitor實(shí)例的添加、刪除、等待ability到達(dá)
    的頭像 發(fā)表于 05-13 17:58 ?962次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>接口</b><b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【(AbilityDelegator)】

    鴻蒙開發(fā)接口Ability框架:【AbilityRunningInfo】

    AbilityRunningInfo模塊提供對(duì)Ability運(yùn)行的相關(guān)信息和狀態(tài)進(jìn)行設(shè)置和查詢的能力。
    的頭像 發(fā)表于 05-14 16:02 ?790次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>接口</b><b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【AbilityRunningInfo】

    鴻蒙開發(fā)接口Ability框架:【AbilityDelegator】

    AbilityDelegator提供添加用于監(jiān)視指定能力的生命周期狀態(tài)更改的AbilityMonitor對(duì)象的能力,包括對(duì)AbilityMonitor實(shí)例的添加、刪除、等待ability到達(dá)
    的頭像 發(fā)表于 05-16 16:48 ?936次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>接口</b><b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【AbilityDelegator】

    鴻蒙Ability Kit(程序框架服務(wù))【ServiceExtensionAbility】

    [ServiceExtensionAbility]是SERVICE類型的ExtensionAbility組件,提供后臺(tái)服務(wù)能力,其內(nèi)部持有了一個(gè)[ServiceExtensionContext],通過[ServiceExtensionContext]提供了豐富的
    的頭像 發(fā)表于 06-04 14:50 ?1207次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> Kit(程序<b class='flag-5'>框架</b>服務(wù))【ServiceExtensionAbility】

    鴻蒙Ability開發(fā)-Stage模型下Ability的創(chuàng)建和使用

    ); hilog.info(ENTRY_ABILITY_DOMAIN, TAG, \'%{public}s\', \'Ability onBackground\'); } } 本文內(nèi)容是鴻蒙
    發(fā)表于 01-08 15:34

    鴻蒙開發(fā)接口Ability框架:【ApplicationContext】

    ApplicationContext模塊提供開發(fā)者應(yīng)用級(jí)別的的上下文的能力,包括提供注冊(cè)及取消注冊(cè)應(yīng)用內(nèi)組件生命周期的監(jiān)聽接口。
    的頭像 發(fā)表于 05-16 11:51 ?627次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>接口</b><b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【ApplicationContext】

    鴻蒙開發(fā)接口Ability框架:【AbilityRunningInfo】

    AbilityRunningInfo模塊提供對(duì)Ability運(yùn)行的相關(guān)信息和狀態(tài)進(jìn)行設(shè)置和查詢的能力。
    的頭像 發(fā)表于 05-17 17:12 ?327次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>接口</b><b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【AbilityRunningInfo】

    鴻蒙Ability Kit(程序框架服務(wù))【Ability內(nèi)頁(yè)面間的跳轉(zhuǎn)】

    基于Stage模型下的Ability開發(fā),實(shí)現(xiàn)Ability內(nèi)頁(yè)面間的跳轉(zhuǎn)和數(shù)據(jù)傳遞。
    的頭像 發(fā)表于 06-03 20:43 ?302次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> Kit(程序<b class='flag-5'>框架</b>服務(wù))【<b class='flag-5'>Ability</b>內(nèi)頁(yè)面間的跳轉(zhuǎn)】

    鴻蒙Ability Kit(程序框架服務(wù))【Ability與ServiceExtensionAbility通信】

    本示例展示通過[IDL的方式]和?[@ohos.rpc]?等接口實(shí)現(xiàn)了Ability與ServiceExtensionAbility之間的通信。
    的頭像 發(fā)表于 06-05 09:28 ?492次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> Kit(程序<b class='flag-5'>框架</b>服務(wù))【<b class='flag-5'>Ability</b>與ServiceExtensionAbility通信】