HarmonyOS API:FA模型能力接口
版本:v3.1 Beta
@ohos.ability.ability (Ability)
更新时间: 2023-03-30 17:37
Ability模块将二级模块API组织在一起方便开发者进行导出。
说明
本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
本模块接口仅可在FA模型下使用
导入模块
import ability from '@ohos.ability.ability'
系统能力:以下各项对应的系统能力均为SystemCapability.Ability.AbilityBase
名称 | 类型 | 必填 | 描述 |
DataAbilityHelper | 否 | DataAbilityHelper二级模块。 | |
PacMap | PacMap | 否 | PacMap二级模块。 |
DataAbilityOperation | 否 | DataAbilityOperation二级模块。 | |
DataAbilityResult | 否 | DataAbilityResult二级模块。 | |
AbilityResult | 否 | AbilityResult二级模块。 | |
ConnectOptions | 否 | ConnectOptions二级模块。 | |
StartAbilityParameter | 否 | StartAbilityParameter二级模块。 |
示例:
import ability from '@ohos.ability.ability';
let dataAbilityHelper: ability.DataAbilityHelper;
let pacMap: ability.PacMap;
let dataAbilityOperation: ability.DataAbilityOperation;
let dataAbilityResult: ability.DataAbilityResult;
let abilityResult: ability.AbilityResult;
let connectOptions: ability.ConnectOptions;
let startAbilityParameter: ability.StartAbilityParameter;
@ohos.ability.featureAbility (FeatureAbility模块)
更新时间: 2023-02-17 09:19
FeatureAbility模块提供带有UI设计与用户交互的能力,包括启动新的ability、获取dataAbilityHelper、设置此Page Ability、获取当前Ability对应的窗口,连接服务等。
说明
本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
本模块接口仅可在FA模型下使用。
使用限制
FeatureAbility模块的接口只能在Page类型的Ability调用
导入模块
import featureAbility from '@ohos.ability.featureAbility';
featureAbility.startAbility
startAbility(parameter: StartAbilityParameter, callback: AsyncCallback<number>): void
启动新的ability(callback形式)。
系统能力:SystemCapability.Ability.AbilityRuntime.FAModel
参数:
参数名 | 类型 | 必填 | 说明 |
parameter | 是 | 表示被启动的Ability。 | |
callback | AsyncCallback<number> | 是 | 被指定的回调方法。 |
示例:
import featureAbility from '@ohos.ability.featureAbility';
import wantConstant from '@ohos.ability.wantConstant';
featureAbility.startAbility(
{
want:
{
action: "",
entities: [""],
type: "",
flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
deviceId: "",
bundleName: "com.example.myapplication",
/* FA模型中abilityName由package + Ability name组成 */
abilityName: "com.example.entry.secondAbility",
uri: ""
},
},
(err, data) => {
console.info("startAbility err: " + JSON.stringify(err) + "data: " + JSON.stringify(data));
}
);
featureAbility.startAbility
startAbility(parameter: StartAbilityParameter): Promise<number>
启动新的ability(Promise形式)。
系统能力:SystemCapability.Ability.AbilityRuntime.FAModel
参数:
参数名 | 类型 | 必填 | 说明 |
parameter | 是 | 表示被启动的Ability。 |
示例:
import featureAbility from '@ohos.ability.featureAbility';
import wantConstant from '@ohos.ability.wantConstant';
featureAbility.startAbility(
{
want:
{
action: "action.system.home",
entities: ["entity.system.home"],
type: "MIMETYPE",
flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
deviceId: "",
bundleName: "com.example.myapplication",
/* FA模型中abilityName由package + Ability name组成 */
abilityName: "com.example.entry.secondAbility",
uri: ""
},
}
).then((data) => {
console.info("startAbility data: " + JSON.stringify(data));
});
featureAbility.acquireDataAbilityHelper7+
acquireDataAbilityHelper(uri: string): DataAbilityHelper
获取dataAbilityHelper。
系统能力:SystemCapability.Ability.AbilityRuntime.FAModel
参数:
参数名 | 类型 | 必填 | 说明 |
uri | string | 是 | 指示要打开的文件的路径。 |
返回值:
类型 | 说明 |
DataAbilityHelper | 用来协助其他Ability访问DataAbility的工具类。 |
示例:
import featureAbility from '@ohos.ability.featureAbility';
var dataAbilityHelper = featureAbility.acquireDataAbilityHelper(
"dataability:///com.example.DataAbility"
);
featureAbility.startAbilityForResult7+
startAbilityForResult(parameter: StartAbilityParameter, callback: AsyncCallback<AbilityResult>): void
启动一个ability,并在该ability被销毁时返回执行结果(callback形式)。
系统能力:SystemCapability.Ability.AbilityRuntime.FAModel
参数:
参数名 | 类型 | 必填 | 说明 |
parameter | 是 | 表示被启动的Ability。 | |
callback | AsyncCallback<AbilityResult> | 是 | 被指定的回调方法。 |
示例:
import featureAbility from '@ohos.ability.featureAbility';
import wantConstant from '@ohos.ability.wantConstant';
featureAbility.startAbilityForResult(
{
want:
{
action: "action.system.home",
entities: ["entity.system.home"],
type: "MIMETYPE",
flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
deviceId: "",
bundleName: "com.example.myapplication",
/* FA模型中abilityName由package + Ability name组成 */
abilityName: "com.example.entry.secondAbility",
uri:""
},
},
(err, data) => {
console.info("startAbilityForResult err: " + JSON.stringify(err) + "data: " + JSON.stringify(data));
}
);
featureAbility.startAbilityForResult7+
startAbilityForResult(parameter: StartAbilityParameter): Promise<AbilityResult>
启动一个ability,并在该ability被销毁时返回执行结果(Promise形式)。
系统能力:SystemCapability.Ability.AbilityRuntime.FAModel
参数:
参数名 | 类型 | 必填 | 说明 |
parameter | 是 | 表示被启动的Ability |
返回值:
类型 | 说明 |
Promise<AbilityResult> | 返回执行结果。 |
示例:
import featureAbility from '@ohos.ability.featureAbility';
import wantConstant from '@ohos.ability.wantConstant';
featureAbility.startAbilityForResult(
{
want:
{
action: "action.system.home",
entities: ["entity.system.home"],
type: "MIMETYPE",
flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
deviceId: "",
bundleName: "com.example.myapplication",
/* FA模型中abilityName由package + Ability name组成 */
abilityName: "com.example.entry.secondAbility",
uri:"",
parameters:
{
mykey0: 1111,
mykey1: [1, 2, 3],
mykey2: "[1, 2, 3]",
mykey3: "xxxxxxxxxxxxxxxxxxxxxx",
mykey4: [1, 15],
mykey5: [false, true, false],
mykey6: ["aaaaaa", "bbbbb", "ccccccccccc"],
mykey7: true,
},
},
},
).then((data) => {
console.info("startAbilityForResult data: " + JSON.stringify(data));
});
featureAbility.terminateSelfWithResult7+
terminateSelfWithResult(parameter: AbilityResult, callback: AsyncCallback<void>): void
设置此Page Ability将返回给调用者的结果代码和数据并破坏此Page Ability(callback形式)。
系统能力:SystemCapability.Ability.AbilityRuntime.FAModel
参数:
参数名 | 类型 | 必填 | 说明 |
parameter | 是 | 表示被启动的Ability。 | |
callback | AsyncCallback<void> | 是 | 被指定的回调方法。 |
示例:
import featureAbility from '@ohos.ability.featureAbility';
import wantConstant from '@ohos.ability.wantConstant';
featureAbility.terminateSelfWithResult(
{
resultCode: 1,
want:
{
action: "action.system.home",
entities: ["entity.system.home"],
type: "MIMETYPE",
flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
deviceId: "",
bundleName: "com.example.myapplication",
/* FA模型中abilityName由package + Ability name组成 */
abilityName: "com.example.entry.secondAbility",
uri:"",
parameters: {
mykey0: 2222,
mykey1: [1, 2, 3],
mykey2: "[1, 2, 3]",
mykey3: "ssssssssssssssssssssssssss",
mykey4: [1, 15],
mykey5: [false, true, false],
mykey6: ["qqqqq", "wwwwww", "aaaaaaaaaaaaaaaaa"],
mykey7: true,
}
},
},
(err) => {
console.info("err: " + JSON.stringify(err))
}
);
featureAbility.terminateSelfWithResult7+
terminateSelfWithResult(parameter: AbilityResult): Promise<void>
设置此Page Ability将返回给调用者的结果代码和数据并破坏此Page Ability(Promise形式)。
系统能力:SystemCapability.Ability.AbilityRuntime.FAModel
参数:
参数名 | 类型 | 必填 | 说明 |
parameter | 是 | 表示被启动的Ability |
返回值:
类型 | 说明 |
Promise<void> | 以Promise形式返回结果。 |
示例:
import featureAbility from '@ohos.ability.featureAbility';
import wantConstant from '@ohos.ability.wantConstant';
featureAbility.terminateSelfWithResult(
{
resultCode: 1,
want:
{
action: "action.system.home",
entities: ["entity.system.home"],
type: "MIMETYPE",
flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
deviceId: "",
bundleName: "com.example.myapplication",
/* FA模型中abilityName由package + Ability name组成 */
abilityName: "com.example.entry.secondAbility",
uri:"",
parameters: {
mykey0: 2222,
mykey1: [1, 2, 3],
mykey2: "[1, 2, 3]",
mykey3: "ssssssssssssssssssssssssss",
mykey4: [1, 15],
mykey5: [false, true, false],
mykey6: ["qqqqq", "wwwwww", "aaaaaaaaaaaaaaaaa"],
mykey7: true,
}
},
}
).then((data) => {
console.info("==========================>terminateSelfWithResult=======================>");
});
featureAbility.hasWindowFocus7+
hasWindowFocus(callback: AsyncCallback<boolean>): void
检查Ability的主窗口是否具有窗口焦点(callback形式)。
系统能力:SystemCapability.Ability.AbilityRuntime.FAModel
参数:
参数名 | 类型 | 必填 | 说明 |
callback | AsyncCallback<boolean> | 是 | 被指定的回调方法。 如果此Ability当前具有视窗焦点,则返回true;否则返回false。 |
示例:
import featureAbility from '@ohos.ability.featureAbility';
featureAbility.hasWindowFocus((err, data) => {
console.info("hasWindowFocus err: " + JSON.stringify(err) + "data: " + JSON.stringify(data));
});
featureAbility.hasWindowFocus7+
hasWindowFocus(): Promise<boolean>
检查Ability的主窗口是否具有窗口焦点(Promise形式)。
系统能力:SystemCapability.Ability.AbilityRuntime.FAModel
返回值:
类型 | 说明 |
Promise<boolean> | 如果此Ability当前具有视窗焦点,则返回true;否则返回false。 |
示例:
import featureAbility from '@ohos.ability.featureAbility';
featureAbility.hasWindowFocus().then((data) => {
console.info("hasWindowFocus data: " + JSON.stringify(data));
});
featureAbility.getWant
getWant(callback: AsyncCallback<Want>): void
获取从Ability发送的Want(callback形式)。
系统能力:SystemCapability.Ability.AbilityRuntime.FAModel
参数:
参数名 | 类型 | 必填 | 说明 |
callback | AsyncCallback<Want> | 是 | 被指定的回调方法。 |
示例:
import featureAbility from '@ohos.ability.featureAbility';
featureAbility.getWant((err, data) => {
console.info("getWant err: " + JSON.stringify(err) + "data: " + JSON.stringify(data));
});
featureAbility.getWant
getWant(): Promise<Want>
获取从Ability发送的Want(Promise形式)。
系统能力:SystemCapability.Ability.AbilityRuntime.FAModel
返回值:
类型 | 说明 |
Promise<Want> | 以Promise的形式返回结果。 |
示例:
import featureAbility from '@ohos.ability.featureAbility';
featureAbility.getWant().then((data) => {
console.info("getWant data: " + JSON.stringify(data));
});
featureAbility.getContext
getContext(): Context
获取应用上下文。
系统能力:SystemCapability.Ability.AbilityRuntime.FAModel
返回值:
类型 | 说明 |
Context | 返回应用程序上下文。 |
示例:
import featureAbility from '@ohos.ability.featureAbility';
var context = featureAbility.getContext()
context.getBundleName((err, data) => {
console.info("getBundleName err: " + JSON.stringify(err) + "data: " + JSON.stringify(data));
});
featureAbility.terminateSelf7+
terminateSelf(callback: AsyncCallback<void>): void
设置Page Ability返回给被调用方的结果代码和数据,并销毁此Page Ability(callback形式)。
系统能力:SystemCapability.Ability.AbilityRuntime.FAModel
参数:
参数名 | 类型 | 必填 | 说明 |
callback | AsyncCallback<void> | 是 | 被指定的回调方法 |
示例:
import featureAbility from '@ohos.ability.featureAbility';
featureAbility.terminateSelf(
(err) => {
console.info("err: " + JSON.stringify(err))
}
)
featureAbility.terminateSelf7+
terminateSelf(): Promise<void>
设置Page Ability返回给被调用方的结果代码和数据,并销毁此Page Ability(Promise形式)。
系统能力:SystemCapability.Ability.AbilityRuntime.FAModel
返回值:
类型 | 说明 |
Promise<void> | 以Promise的形式返回结果。 |
示例:
import featureAbility from '@ohos.ability.featureAbility';
featureAbility.terminateSelf().then((data) => {
console.info("==========================>terminateSelf=======================>");
});
featureAbility.connectAbility7+
connectAbility(request: Want, options:ConnectOptions): number
将当前ability连接到指定ServiceAbility(callback形式)。
系统能力:SystemCapability.Ability.AbilityRuntime.FAModel
参数:
参数名 | 类型 | 必填 | 说明 |
request | Want | 是 | 表示被连接的ServiceAbility。 |
options | 是 | 被指定的回调方法。 |
返回值:
类型 | 说明 |
number | 连接的ServiceAbilityID。 |
示例:
import rpc from '@ohos.rpc';
import featureAbility from '@ohos.ability.featureAbility';
function onConnectCallback(element, remote){
console.log('ConnectAbility onConnect remote is proxy:' + (remote instanceof rpc.RemoteProxy));
}
function onDisconnectCallback(element){
console.log('ConnectAbility onDisconnect element.deviceId : ' + element.deviceId)
}
function onFailedCallback(code){
console.log('featureAbilityTest ConnectAbility onFailed errCode : ' + code)
}
var connectId = featureAbility.connectAbility(
{
deviceId: "",
bundleName: "com.ix.ServiceAbility",
abilityName: "ServiceAbilityA",
},
{
onConnect: onConnectCallback,
onDisconnect: onDisconnectCallback,
onFailed: onFailedCallback,
},
);
featureAbility.disconnectAbility7+
disconnectAbility(connection: number, callback:AsyncCallback<void>): void
断开与指定ServiceAbility的连接(callback形式)。
系统能力:SystemCapability.Ability.AbilityRuntime.FAModel
参数:
参数名 | 类型 | 必填 | 说明 |
connection | number | 是 | 指定断开连接的ServiceAbilityID |
callback | AsyncCallback<void> | 是 | 被指定的回调方法 |
示例:
import rpc from '@ohos.rpc';
import featureAbility from '@ohos.ability.featureAbility';
function onConnectCallback(element, remote){
console.log('ConnectAbility onConnect remote is proxy:' + (remote instanceof rpc.RemoteProxy));
}
function onDisconnectCallback(element){
console.log('ConnectAbility onDisconnect element.deviceId : ' + element.deviceId)
}
function onFailedCallback(code){
console.log('featureAbilityTest ConnectAbility onFailed errCode : ' + code)
}
var connectId = featureAbility.connectAbility(
{
bundleName: "com.ix.ServiceAbility",
abilityName: "ServiceAbilityA",
},
{
onConnect: onConnectCallback,
onDisconnect: onDisconnectCallback,
onFailed: onFailedCallback,
},
);
var result = featureAbility.disconnectAbility(connectId,
(error) => {
console.log('featureAbilityTest DisConnectJsSameBundleName result errCode : ' + error.code)
},
);
featureAbility.disconnectAbility7+
disconnectAbility(connection: number): Promise<void>
断开与指定ServiceAbility的连接(Promise形式)。
系统能力:SystemCapability.Ability.AbilityRuntime.FAModel
参数:
参数名 | 类型 | 必填 | 说明 |
connection | number | 是 | 指定断开连接的ServiceAbilityID |
返回值:
类型 | 说明 |
Promise<void> | 以Promise形式返回结果。 |
示例:
import rpc from '@ohos.rpc';
import featureAbility from '@ohos.ability.featureAbility';
function onConnectCallback(element, remote){
console.log('ConnectAbility onConnect remote is proxy:' + (remote instanceof rpc.RemoteProxy));
}
function onDisconnectCallback(element){
console.log('ConnectAbility onDisconnect element.deviceId : ' + element.deviceId)
}
function onFailedCallback(code){
console.log('featureAbilityTest ConnectAbility onFailed errCode : ' + code)
}
var connectId = featureAbility.connectAbility(
{
bundleName: "com.ix.ServiceAbility",
abilityName: "ServiceAbilityA",
},
{
onConnect: onConnectCallback,
onDisconnect: onDisconnectCallback,
onFailed: onFailedCallback,
},
);
featureAbility.disconnectAbility(connectId).then((data) => {
console.log('data : ' + data);
}).catch((error)=>{
console.log('featureAbilityTest result errCode : ' + error.code);
});
featureAbility.getWindow7+
getWindow(callback: AsyncCallback<window.Window>): void
获取当前Ability对应的窗口(callback形式)。
系统能力:SystemCapability.Ability.AbilityRuntime.FAModel
参数:
参数名 | 类型 | 必填 | 说明 |
callback | AsyncCallback<window.Window> | 是 | 返回与当前Ability对应的窗口。 |
示例:
featureAbility.getWindow((err, data) => {
console.info("getWindow err: " + JSON.stringify(err) + "data: " + typeof(data));
});
featureAbility.getWindow7+
getWindow(): Promise<window.Window>;
获取当前Ability对应的窗口(Promise形式)。
系统能力:SystemCapability.Ability.AbilityRuntime.FAModel
返回值:
类型 | 说明 |
Promise<window.Window> | 返回与当前Ability对应的窗口。 |
示例:
featureAbility.getWindow().then((data) => {
console.info("getWindow data: " + typeof(data));
});
AbilityWindowConfiguration
使用时通过featureAbility.AbilityWindowConfiguration获取。
示例:
featureAbility.AbilityWindowConfiguration.WINDOW_MODE_UNDEFINED
系统能力:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.FAModel
名称 | 值 | 说明 |
WINDOW_MODE_UNDEFINED7+ | 0 | 未定义。 |
WINDOW_MODE_FULLSCREEN7+ | 1 | 全屏。 |
WINDOW_MODE_SPLIT_PRIMARY7+ | 100 | 分屏主屏。 |
WINDOW_MODE_SPLIT_SECONDARY7+ | 101 | 分屏次屏。 |
WINDOW_MODE_FLOATING7+ | 102 | 悬浮窗。 |
AbilityStartSetting
abilityStartSetting属性是一个定义为[key: string]: any的对象,key对应设定类型为:AbilityStartSetting枚举类型,value对应设定类型为:AbilityWindowConfiguration枚举类型。
使用时通过featureAbility.AbilityStartSetting获取。
示例:
featureAbility.AbilityStartSetting.BOUNDS_KEY
系统能力:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.FAModel
名称 | 值 | 说明 |
BOUNDS_KEY7+ | "abilityBounds" | 窗口显示大小属性的参数名。 |
WINDOW_MODE_KEY7+ | "windowMode" | 窗口显示模式属性的参数名。 |
DISPLAY_ID_KEY7+ | "displayId" | 窗口显示设备ID属性的参数名。 |
ErrorCode
获取错误代码。
系统能力:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.FAModel
名称 | 值 | 说明 |
NO_ERROR7+ | 0 | 没有错误。 |
INVALID_PARAMETER7+ | -1 | 无效的参数。 |
ABILITY_NOT_FOUND7+ | -2 | 找不到能力。 |
PERMISSION_DENY7+ | -3 | 拒绝许可。 |
DataAbilityOperationType
指示数据的操作类型。
系统能力:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.FAModel
名称 | 值 | 说明 |
TYPE_INSERT7+ | 1 | 插入类型。 |
TYPE_UPDATE7+ | 2 | 修改类型。 |
TYPE_DELETE7+ | 3 | 删除类型。 |
TYPE_ASSERT7+ | 4 | 声明类型。 |
flags说明
系统能力:以下各项对应的系统能力均为SystemCapability.Ability.AbilityBase
名称 | 值 | 说明 |
FLAG_AUTH_READ_URI_PERMISSION | 0x00000001 | 指示对URI执行读取操作的授权。 |
FLAG_AUTH_WRITE_URI_PERMISSION | 0x00000002 | 指示对URI执行写入操作的授权。 |
FLAG_ABILITY_FORWARD_RESULT | 0x00000004 | 将结果返回给元能力。 |
FLAG_ABILITY_CONTINUATION | 0x00000008 | 确定是否可以将本地设备上的功能迁移到远程设备。 |
FLAG_NOT_OHOS_COMPONENT | 0x00000010 | 指定组件是否属于OHOS。 |
FLAG_ABILITY_FORM_ENABLED | 0x00000020 | 指定是否启动某个能力。 |
FLAG_ABILITYSLICE_MULTI_DEVICE | 0x00000100 | 支持分布式调度系统中的多设备启动。 |
FLAG_ABILITY_CONTINUATION_REVERSIBLE | 0x00000400 | 表示迁移是可拉回的。 |
FLAG_INSTALL_ON_DEMAND | 0x00000800 | 如果未安装指定的功能,请安装该功能。 |
FLAG_INSTALL_WITH_BACKGROUND_MODE | 0x80000000 | 如果未安装,使用后台模式安装该功能。 |
FLAG_ABILITY_CLEAR_MISSION | 0x00008000 | 指示清除其他任务的操作。可以为传递给startAbility方法的Want设置此标志,并且必须与flag_ABILITY_NEW_MISSION一起使用。 |
FLAG_ABILITY_NEW_MISSION | 0x10000000 | 指示在历史任务堆栈上创建任务的操作。 |
FLAG_ABILITY_MISSION_TOP | 0x20000000 | 指示如果启动能力的现有实例已位于任务堆栈的顶部,则将重用该实例。否则,将创建一个新的能力实例。 |