ServiceExtensionContext
ServiceExtensionContext模塊是ServiceExtension的上下文環境,繼承自ExtensionContext。
ServiceExtensionContext模塊提供ServiceExtension具有的能力和接口,包括啟動、停止、綁定、解綁Ability。
說明:
開發前請熟悉鴻蒙開發指導文檔:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
本模塊首批接口從API version 9開始支持。后續版本的新增接口,采用上角標單獨標記接口的起始版本。
本模塊接口僅可在Stage模型下使用。
使用說明
ServiceExtensionContext模塊是ServiceExtension的上下文環境,繼承自ExtensionContext。
屬性
系統能力 :SystemCapability.Ability.AbilityRuntime.Core
名稱 | 參數類型 | 可讀 | 可寫 | 說明 |
---|---|---|---|---|
extensionAbilityInfo | [ExtensionAbilityInfo] | 是 | 否 | 服務擴展信息。 |
startAbility
startAbility(want: Want, callback: AsyncCallback): void;
啟動Ability。
系統能力 :SystemCapability.Ability.AbilityRuntime.Core
系統API : 此接口為系統接口,三方應用不支持調用。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
want | [Want] | 是 | Want類型參數,傳入需要啟動的ability的信息,如ability名稱,包名等。 |
callback | AsyncCallback | 否 | 回調函數,返回接口調用是否成功的結果。 |
示例:
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;
啟動Ability。通過Promise返回結果。
系統能力 :SystemCapability.Ability.AbilityRuntime.Core
系統API : 此接口為系統接口,三方應用不支持調用。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
want | [Want] | 是 | Want類型參數,傳入需要啟動的ability的信息,如ability名稱,包名等。 |
options | [StartOptions] | 是 | 啟動Ability所攜帶的參數。 |
返回值:
類型 | 說明 |
---|---|
Promise | 返回一個Promise,包含接口的結果。 |
示例:
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
啟動Ability。
系統能力 :SystemCapability.Ability.AbilityRuntime.Core
系統API : 此接口為系統接口,三方應用不支持調用。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
want | [Want] | 是 | 啟動Ability的want信息。 |
options | [StartOptions] | 是 | 啟動Ability所攜帶的參數。 |
callback | AsyncCallback | 是 | callback形式返回啟動結果。 |
示例:
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;
根據account啟動Ability(callback形式)。
系統能力 :SystemCapability.Ability.AbilityRuntime.Core
系統API : 此接口為系統接口,三方應用不支持調用。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
want | [Want] | 是 | 啟動Ability的want信息。 |
accountId | number | 是 | 需要啟動的accountId。 |
callback | AsyncCallback | 是 | 啟動Ability的回調函數。 |
示例:
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;
根據account啟動Ability(callback形式)。
系統能力 :SystemCapability.Ability.AbilityRuntime.Core
系統API : 此接口為系統接口,三方應用不支持調用。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
want | [Want] | 是 | 啟動Ability的want信息。 |
accountId | number | 是 | 需要啟動的accountId。 |
options | [StartOptions] | 否 | 啟動Ability所攜帶的參數。 |
callback | AsyncCallback | 是 | 啟動Ability的回調函數。 |
示例:
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;
根據account啟動Ability(Promise形式)。
系統能力 :SystemCapability.Ability.AbilityRuntime.Core
系統API : 此接口為系統接口,三方應用不支持調用。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
want | [Want] | 是 | 啟動Ability的want信息。 |
accountId | number | 是 | 需要啟動的accountId。 |
options | [StartOptions] | 否 | 啟動Ability所攜帶的參數。 |
示例:
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自身。
系統能力 :SystemCapability.Ability.AbilityRuntime.Core
系統API : 此接口為系統接口,三方應用不支持調用。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback | 否 | 回調函數,返回接口調用是否成功的結果。 |
示例:
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返回結果。
系統能力 :SystemCapability.Ability.AbilityRuntime.Core
系統API : 此接口為系統接口,三方應用不支持調用。
返回值:
類型 | 說明 |
---|---|
Promise | 返回一個Promise,包含接口的結果。 |
示例:
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;
將一個Ability與服務類型的Ability綁定。
系統能力 :SystemCapability.Ability.AbilityRuntime.Core
系統API : 此接口為系統接口,三方應用不支持調用。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
want | [Want] | 是 | Want類型參數,傳入需要啟動的ability的信息,如ability名稱,包名等。 |
options | [ConnectOptions] | 是 | ConnectOptions類型的回調函數,返回服務連接成功、斷開或連接失敗后的信息。 |
返回值:
類型 | 說明 |
---|---|
number | 返回一個number,后續根據這個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將當前能力連接到一個能力。
系統能力 :SystemCapability.Ability.AbilityRuntime.Core
系統API : 此接口為系統接口,三方應用不支持調用。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
want | [Want] | 是 | 啟動Ability的want信息。 |
accountId | number | 是 | 需要啟動的accountId。 |
options | ConnectOptions | 否 | 遠端對象實例。 |
返回值:
類型 | 說明 |
---|---|
number | 返回Ability連接的結果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;
將一個Ability與綁定的服務類型的Ability解綁。
系統能力 :SystemCapability.Ability.AbilityRuntime.Core
系統API : 此接口為系統接口,三方應用不支持調用。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
connection | number | 是 | 在connectAbility中返回的number。 |
callback | AsyncCallback | 否 | 回調函數,返回接口調用是否成功的結果。 |
示例:
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;
將一個Ability與綁定的服務類型的Ability解綁。通過Promise返回結果。
系統能力 :SystemCapability.Ability.AbilityRuntime.Core
系統API : 此接口為系統接口,三方應用不支持調用。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
connection | number | 是 | 在connectAbility中返回的number。 |
返回值:
類型 | 說明HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿 |
---|---|
Promise | 返回一個Promise,包含接口的結果。 |
示例:
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));
});
}
}
審核編輯 黃宇
-
接口
+關注
關注
33文章
7819瀏覽量
148892 -
框架
+關注
關注
0文章
341瀏覽量
17107 -
鴻蒙
+關注
關注
55文章
1854瀏覽量
42176
發布評論請先 登錄
相關推薦
鴻蒙開發接口Ability框架:【@ohos.application.Ability (Ability)】
![<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</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>)】](https://file1.elecfans.com/web2/M00/C5/D1/wKgZomYChGOAUaiiAADe1d8SeRY102.jpg)
鴻蒙開發接口Ability框架:【@ohos.ability.featureAbility (FeatureAbility模塊)】
![<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</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模塊)】](https://file1.elecfans.com/web2/M00/E0/AF/wKgZomY4loOAFF3hAACaC2ijUOY058.png)
鴻蒙開發接口Ability框架:【@ohos.ability.particleAbility (particleAbility模塊)】
![<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</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模塊)】](https://file1.elecfans.com/web2/M00/C5/D1/wKgZomYChGOAUaiiAADe1d8SeRY102.jpg)
鴻蒙開發接口Ability框架:【(AbilityDelegator)】
![<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b><b class='flag-5'>接口</b><b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【(AbilityDelegator)】](https://file1.elecfans.com/web2/M00/C5/D1/wKgZomYChGOAUaiiAADe1d8SeRY102.jpg)
鴻蒙開發接口Ability框架:【AbilityDelegator】
![<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b><b class='flag-5'>接口</b><b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【AbilityDelegator】](https://file1.elecfans.com/web2/M00/C5/D1/wKgZomYChGOAUaiiAADe1d8SeRY102.jpg)
鴻蒙Ability開發-Stage模型下Ability的創建和使用
跟阿斌一起學鴻蒙(2): Ability vs App?
HarmonyOS應用開發-Page Ability啟動Service Ability
鴻蒙開發接口Ability框架:【ApplicationContext】
![<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b><b class='flag-5'>接口</b><b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【ApplicationContext】](https://file1.elecfans.com/web2/M00/C5/CD/wKgZomYCdwyAIFf5AAB_7E1pFms943.jpg)
評論