HarmonyOS实战开发:@ohos.ability.featureAbility (FeatureAbility模块)

FeatureAbility模块提供与用户进行交互的Ability的能力,包括启动新的Ability、停止Ability、获取dataAbilityHelper对象、获取当前Ability对应的窗口,连接断连Service等。

说明:

本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 本模块接口仅可在FA模型下使用,Stage模型下需使用UIAbility模块UIAbilityContext模块

使用限制

FeatureAbility模块的接口只能在Page类型的Ability中调用

导入模块

import featureAbility from '@ohos.ability.featureAbility';

featureAbility.startAbility

startAbility(parameter: StartAbilityParameter, callback: AsyncCallback<number>): void

启动新的Ability(callback形式)。

使用规则:

  • 调用方应用位于后台时,使用该接口启动Ability需申请权限ohos.permission.START_ABILITIES_FROM_BACKGROUND
  • 跨应用场景下,目标Ability的visible属性若配置为false,调用方应用需申请权限ohos.permission.START_INVISIBLE_ABILITY
  • 组件启动规则详见:组件启动规则(FA模型)

系统能力:SystemCapability.Ability.AbilityRuntime.FAModel

说明:本接口仅可在FA模型下使用,Stage模型下需使用UIAbilityContext.startAbility

参数:

参数名类型必填说明
parameterStartAbilityParameter表示被启动的Ability。
callbackAsyncCallback<number>回调函数。当启动Ability成功,err为undefined,data为0表示启动成功,data为其他表示启动失败;否则为错误对象。

错误码:

错误码ID错误信息
1Get ability error.
202Parameter is invalid.
16000001The specified ability does not exist.
16000002Incorrect ability type.
16000004Can not start invisible component.
16000005The specified process does not have the permission.
16000006Cross-user operations are not allowed.
16000008The crowdtesting application expires.
16000009An ability cannot be started or stopped in Wukong mode.
16000010The call with the continuation flag is forbidden.
16000011The context does not exist.
16000012The application is controlled.
16000013The application is controlled by EDM.
16000050Internal error.
16000053The ability is not on the top of the UI.
16000055Installation-free timed out.
16200001The caller has been released.

错误码详细介绍请参考errcode-ability

示例:

import featureAbility from '@ohos.ability.featureAbility';
import wantConstant from '@ohos.app.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.myapplication.secondAbility',
            uri: ''
        },
    },
    (error, data) => {
        if (error && error.code !== 0) {
            console.error(`startAbility fail, error: ${JSON.stringify(error)}`);
        } else {
            console.log(`startAbility success, data: ${JSON.stringify(data)}`);
        }
    }
);

featureAbility.startAbility

startAbility(parameter: StartAbilityParameter): Promise<number>

启动新的Ability(Promise形式)。

使用规则:

  • 调用方应用位于后台时,使用该接口启动Ability需申请权限ohos.permission.START_ABILITIES_FROM_BACKGROUND
  • 跨应用场景下,目标Ability的visible属性若配置为false,调用方应用需申请权限ohos.permission.START_INVISIBLE_ABILITY
  • 组件启动规则详见:组件启动规则(FA模型)

系统能力:SystemCapability.Ability.AbilityRuntime.FAModel

说明:本接口仅可在FA模型下使用,Stage模型下需使用UIAbilityContext.startAbility

参数:

参数名类型必填说明
parameterStartAbilityParameter表示被启动的Ability。

返回值:

类型说明
Promise<number>Promise对象。返回0表示启动成功,返回其他表示启动失败。

错误码:

错误码ID错误信息
1Get ability error.
202Parameter is invalid.
16000001The specified ability does not exist.
16000002Incorrect ability type.
16000004Can not start invisible component.
16000005The specified process does not have the permission.
16000006Cross-user operations are not allowed.
16000008The crowdtesting application expires.
16000009An ability cannot be started or stopped in Wukong mode.
16000010The call with the continuation flag is forbidden.
16000011The context does not exist.
16000012The application is controlled.
16000013The application is controlled by EDM.
16000050Internal error.
16000053The ability is not on the top of the UI.
16000055Installation-free timed out.
16200001The caller has been released.

错误码详细介绍请参考errcode-ability

示例:

import featureAbility from '@ohos.ability.featureAbility';
import wantConstant from '@ohos.app.ability.wantConstant';
featureAbility.startAbility(
    {
        want:
        {
            action: 'ohos.want.action.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.myapplication.secondAbility',
            uri: ''
        },
    }
).then((data) => {
    console.info(`startAbility data: ${JSON.stringify(data)}`);
});

featureAbility.acquireDataAbilityHelper7+

acquireDataAbilityHelper(uri: string): DataAbilityHelper

获取dataAbilityHelper对象。

使用规则:

  • 跨应用访问dataAbility,对端应用需配置关联启动
  • 调用方应用位于后台时,使用该接口访问dataAbility需申请权限(基于API 8或更早版本SDK开发的应用在启动DataAbility组件时不受此限制的约束)ohos.permission.START_ABILITIES_FROM_BACKGROUND
  • 跨应用场景下,目标dataAbility的visible属性若配置为false,调用方应用需申请权限ohos.permission.START_INVISIBLE_ABILITY
  • 组件启动规则详见:组件启动规则(FA模型)

系统能力:SystemCapability.Ability.AbilityRuntime.FAModel

说明:本接口仅可在FA模型下使用,Stage模型下需使用dataShare.createDataShareHelper

参数:

参数名类型必填说明
uristring表示要打开的文件的路径。

返回值:

类型说明
DataAbilityHelper用来协助其他Ability访问DataAbility的工具类。

示例:

import featureAbility from '@ohos.ability.featureAbility';
let dataAbilityHelper = featureAbility.acquireDataAbilityHelper(
    'dataability:///com.example.DataAbility'
);

featureAbility.startAbilityForResult7+

startAbilityForResult(parameter: StartAbilityParameter, callback: AsyncCallback<AbilityResult>): void

启动一个Ability。Ability被启动后,有如下情况(callback形式):

  • 正常情况下可通过调用terminateSelfWithResult接口使之终止并且返回结果给调用方。
  • 异常情况下比如杀死Ability会返回异常信息给调用方, 异常信息中resultCode为-1。
  • 如果被启动的Ability模式是单实例模式, 不同应用多次调用该接口启动这个Ability,当这个Ability调用terminateSelfWithResult接口使之终止时,只将正常结果返回给最后一个调用方, 其它调用方返回异常信息, 异常信息中resultCode为-1。

使用规则:

  • 调用方应用位于后台时,使用该接口启动Ability需申请权限ohos.permission.START_ABILITIES_FROM_BACKGROUND
  • 跨应用场景下,目标Ability的visible属性若配置为false,调用方应用需申请权限ohos.permission.START_INVISIBLE_ABILITY
  • 组件启动规则详见:组件启动规则(FA模型)

系统能力:SystemCapability.Ability.AbilityRuntime.FAModel

说明:本接口仅可在FA模型下使用,Stage模型下需使用UIAbilityContext.startAbilityForResult

参数:

参数名类型必填说明
parameterStartAbilityParameter表示被启动的Ability。
callbackAsyncCallback<AbilityResult>回调函数。当启动Ability成功,err为undefined,data为ability的启动结果;否则为错误对象。

错误码:

错误码ID错误信息
1Get ability error.
202Parameter is invalid.
16000001The specified ability does not exist.
16000002Incorrect ability type.
16000004Can not start invisible component.
16000005The specified process does not have the permission.
16000006Cross-user operations are not allowed.
16000008The crowdtesting application expires.
16000009An ability cannot be started or stopped in Wukong mode.
16000010The call with the continuation flag is forbidden.
16000011The context does not exist.
16000012The application is controlled.
16000013The application is controlled by EDM.
16000050Internal error.
16000053The ability is not on the top of the UI.
16000055Installation-free timed out.
16200001The caller has been released.

错误码详细介绍请参考errcode-ability

示例:

import featureAbility from '@ohos.ability.featureAbility';
import wantConstant from '@ohos.app.ability.wantConstant';
featureAbility.startAbilityForResult(
   {
        want:
        {
            action: 'ohos.want.action.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.myapplication.secondAbility',
            uri:''
        },
    },
    (error, data) => {
        if (error && error.code !== 0) {
            console.error(`startAbilityForResult fail, error: ${JSON.stringify(error)}`);
        } else {
            console.log(`startAbilityForResult success, data: ${JSON.stringify(data)}`);
        }
    }
);

featureAbility.startAbilityForResult7+

startAbilityForResult(parameter: StartAbilityParameter): Promise<AbilityResult>

启动一个Ability。Ability被启动后,有如下情况(Promise形式):

  • 正常情况下可通过调用terminateSelfWithResult接口使之终止并且返回结果给调用方。
  • 异常情况下比如杀死Ability会返回异常信息给调用方, 异常信息中resultCode为-1。
  • 如果被启动的Ability模式是单实例模式, 不同应用多次调用该接口启动这个Ability,当这个Ability调用terminateSelfWithResult接口使之终止时,只将正常结果返回给最后一个调用方, 其它调用方返回异常信息, 异常信息中resultCode为-1。

使用规则:

  • 调用方应用位于后台时,使用该接口启动Ability需申请权限ohos.permission.START_ABILITIES_FROM_BACKGROUND
  • 跨应用场景下,目标Ability的visible属性若配置为false,调用方应用需申请权限ohos.permission.START_INVISIBLE_ABILITY
  • 组件启动规则详见:组件启动规则(FA模型)

系统能力:SystemCapability.Ability.AbilityRuntime.FAModel

说明:本接口仅可在FA模型下使用,Stage模型下需使用UIAbilityContext.startAbilityForResult

参数:

参数名类型必填说明
parameterStartAbilityParameter表示被启动的Ability

返回值:

类型说明
Promise<AbilityResult>Promise对象,返回启动Ability的结果。

错误码:

错误码ID错误信息
1Get ability error.
202Parameter is invalid.
16000001The specified ability does not exist.
16000002Incorrect ability type.
16000004Can not start invisible component.
16000005The specified process does not have the permission.
16000006Cross-user operations are not allowed.
16000008The crowdtesting application expires.
16000009An ability cannot be started or stopped in Wukong mode.
16000010The call with the continuation flag is forbidden.
16000011The context does not exist.
16000012The application is controlled.
16000013The application is controlled by EDM.
16000050Internal error.
16000053The ability is not on the top of the UI.
16000055Installation-free timed out.
16200001The caller has been released.

错误码详细介绍请参考errcode-ability

示例:

import featureAbility from '@ohos.ability.featureAbility';
import wantConstant from '@ohos.app.ability.wantConstant';
featureAbility.startAbilityForResult(
    {
        want:
        {
            action: 'ohos.want.action.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.myapplication.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

停止当前的Ability。如果该Ability是通过调用startAbilityForResult接口被拉起的,调用terminateSelfWithResult接口时会将结果返回给调用者,如果该Ability不是通过调用startAbilityForResult接口被拉起的,调用terminateSelfWithResult接口时不会有结果返回给调用者(callback形式)。

系统能力:SystemCapability.Ability.AbilityRuntime.FAModel

说明:本接口仅可在FA模型下使用,Stage模型下需使用UIAbilityContext.terminateSelfWithResult

参数:

参数名类型必填说明
parameterAbilityResult表示停止Ability之后返回的结果。
callbackAsyncCallback<void>回调函数。当停止当前Ability成功,err为undefined,否则为错误对象。

错误码:

错误码ID错误信息
16000001The specified ability does not exist.
16000004Can not start invisible component.
16000005The specified process does not have the permission.
16000009An ability cannot be started or stopped in Wukong mode.
16000011The context does not exist.
16000050Internal error.

错误码详细介绍请参考errcode-ability

示例:

import featureAbility from '@ohos.ability.featureAbility';
import wantConstant from '@ohos.app.ability.wantConstant';
featureAbility.terminateSelfWithResult(
    {
        resultCode: 1,
        want:
        {
            action: 'ohos.want.action.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.myapplication.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,
            }
        },
    },
    (error) => {
        console.error(`error: ${JSON.stringify(error)}`);
    }
);

featureAbility.terminateSelfWithResult7+

terminateSelfWithResult(parameter: AbilityResult): Promise<void>

停止当前的Ability。如果该Ability是通过调用startAbilityForResult接口被拉起的,调用terminateSelfWithResult接口时会将结果返回给调用者,如果该Ability不是通过调用startAbilityForResult接口被拉起的,调用terminateSelfWithResult接口时不会有结果返回给调用者(Promise形式)。

系统能力:SystemCapability.Ability.AbilityRuntime.FAModel

说明:本接口仅可在FA模型下使用,Stage模型下需使用UIAbilityContext.terminateSelfWithResult

参数:

参数名类型必填说明
parameterAbilityResult表示停止Ability之后返回的结果

返回值:

类型说明
Promise<void>Promise对象。无返回结果的Promise对象。

错误码:

错误码ID错误信息
16000001The specified ability does not exist.
16000004Can not start invisible component.
16000005The specified process does not have the permission.
16000009An ability cannot be started or stopped in Wukong mode.
16000011The context does not exist.
16000050Internal error.

错误码详细介绍请参考errcode-ability

示例:

import featureAbility from '@ohos.ability.featureAbility';
import wantConstant from '@ohos.app.ability.wantConstant';
featureAbility.terminateSelfWithResult(
    {
        resultCode: 1,
        want:
        {
            action: 'ohos.want.action.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.myapplication.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(() => {
    console.info('==========================>terminateSelfWithResult=======================>');
});

featureAbility.hasWindowFocus7+

hasWindowFocus(callback: AsyncCallback<boolean>): void

检查Ability的主窗口是否具有窗口焦点(callback形式)。

系统能力:SystemCapability.Ability.AbilityRuntime.FAModel

说明:本接口仅可在FA模型下使用,Stage模型下需使用on('windowEvent')

参数:

参数名类型必填说明
callbackAsyncCallback<boolean>以callback的形式返回结果。
如果此Ability当前具有视窗焦点,则返回true;否则返回false。

错误码:

错误码ID错误信息
-102Failed to acquire ability object.

示例:

import featureAbility from '@ohos.ability.featureAbility';
featureAbility.hasWindowFocus((error, data) => {
    if (error && error.code !== 0) {
        console.error(`hasWindowFocus fail, error: ${JSON.stringify(error)}`);
    } else {
        console.log(`hasWindowFocus success, data: ${JSON.stringify(data)}`);
    }
});

featureAbility.hasWindowFocus7+

hasWindowFocus(): Promise<boolean>

检查Ability的主窗口是否具有窗口焦点(Promise形式)。

系统能力:SystemCapability.Ability.AbilityRuntime.FAModel

返回值:

类型说明
Promise<boolean>Promise形式返回结果,如果此Ability当前具有视窗焦点,则返回true;否则返回false。

错误码:

错误码ID错误信息
-102Failed to acquire ability object.

示例:

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

说明:本接口仅可在FA模型下使用,Stage模型下需使用UIAbility.launchWant

参数:

参数名类型必填说明
callbackAsyncCallback<Want>以callback的形式返回want。

错误码:

错误码ID错误信息
-102Failed to acquire ability object.
-106Call the ability interface, the return value is wrong.

示例:

import featureAbility from '@ohos.ability.featureAbility';
featureAbility.getWant((error, data) => {
    if (error && error.code !== 0) {
        console.error(`getWant fail, error: ${JSON.stringify(error)}`);
    } else {
        console.log(`getWant success, data: ${JSON.stringify(data)}`);
    }
});

featureAbility.getWant

getWant(): Promise<Want>

获取要拉起的Ability对应的Want(Promise形式)。

系统能力:SystemCapability.Ability.AbilityRuntime.FAModel

说明:本接口仅可在FA模型下使用,Stage模型下需使用UIAbility.launchWant

返回值:

类型说明
Promise<Want>以Promise的形式返回want。

错误码:

错误码ID错误信息
-102Failed to acquire ability object.
-106Call the ability interface, the return value is wrong.

示例:

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

说明:本接口仅可在FA模型下使用,Stage模型下需使用UIAbility.context

返回值:

类型说明
Context返回应用程序上下文。

示例:

import featureAbility from '@ohos.ability.featureAbility';
let context = featureAbility.getContext();
context.getBundleName((error, data) => {
    if (error && error.code !== 0) {
        console.error(`getBundleName fail, error: ${JSON.stringify(error)}`);
    } else {
        console.log(`getBundleName success, data: ${JSON.stringify(data)}`);
    }
});

featureAbility.terminateSelf7+

terminateSelf(callback: AsyncCallback<void>): void

停止当前的Ability(callback形式)。

系统能力:SystemCapability.Ability.AbilityRuntime.FAModel

说明:本接口仅可在FA模型下使用,Stage模型下需使用UIAbilityContext.terminateSelf

参数:

参数名类型必填说明
callbackAsyncCallback<void>以callback的形式返回停止当前Ability结果

错误码:

错误码ID错误信息
16000001The specified ability does not exist.
16000004Can not start invisible component.
16000005The specified process does not have the permission.
16000009An ability cannot be started or stopped in Wukong mode.
16000011The context does not exist.
16000050Internal error.

错误码详细介绍请参考errcode-ability

示例:

import featureAbility from '@ohos.ability.featureAbility';
featureAbility.terminateSelf(
    (error) => {
        console.error(`error: ${JSON.stringify(error)}`);
    }
)

featureAbility.terminateSelf7+

terminateSelf(): Promise<void>

停止当前的Ability(Promise形式)。

系统能力:SystemCapability.Ability.AbilityRuntime.FAModel

说明:本接口仅可在FA模型下使用,Stage模型下需使用UIAbilityContext.terminateSelf

返回值:

类型说明
Promise<void>Promise对象。无返回结果的Promise对象。

错误码:

错误码ID错误信息
16000001The specified ability does not exist.
16000004Can not start invisible component.
16000005The specified process does not have the permission.
16000009An ability cannot be started or stopped in Wukong mode.
16000011The context does not exist.
16000050Internal error.

错误码详细介绍请参考errcode-ability

示例:

import featureAbility from '@ohos.ability.featureAbility';
featureAbility.terminateSelf().then(() => {
    console.info('==========================>terminateSelf=======================>');
});

featureAbility.connectAbility7+

connectAbility(request: Want, options:ConnectOptions): number

将当前Ability与指定的ServiceAbility进行连接。

使用规则:

  • 跨应用连接serviceAbility,对端应用需配置关联启动
  • 调用方应用位于后台时,使用该接口连接serviceAbility需申请权限(基于API 8或更早版本SDK开发的应用在启动ServiceAbility组件时不受此限制的约束)ohos.permission.START_ABILITIES_FROM_BACKGROUND
  • 跨应用场景下,目标serviceAbility的visible属性若配置为false,调用方应用需申请权限ohos.permission.START_INVISIBLE_ABILITY
  • 组件启动规则详见:组件启动规则(FA模型)

系统能力:SystemCapability.Ability.AbilityRuntime.FAModel

说明:本接口仅可在FA模型下使用,Stage模型下需使用UIAbilityContext.connectAbility

参数:

参数名类型必填说明
requestWant表示被连接的ServiceAbility。
optionsConnectOptions表示连接回调函数。

返回值:

类型说明
number连接的ServiceAbility的ID(ID从0开始自增,每连接成功一次ID加1)。

错误码:

错误码ID错误信息
-1Invalid parameter.
-2Ability not found.
-3Permission denied.
16000001The specified ability does not exist.
16000002Incorrect ability type.
16000004Can not start invisible component.
16000005The specified process does not have the permission.
16000006Cross-user operations are not allowed.
16000008The crowdtesting application expires.
16000053The ability is not on the top of the UI.
16000055Installation-free timed out.
16000011The context does not exist.
16000050Internal error.

错误码详细介绍请参考errcode-ability

示例:

import rpc from '@ohos.rpc';
import featureAbility from '@ohos.ability.featureAbility';

let connectId = featureAbility.connectAbility(
    {
        deviceId: '',
        bundleName: 'com.ix.ServiceAbility',
        abilityName: 'com.ix.ServiceAbility.ServiceAbilityA',
    },
    {
        onConnect: (element, remote) => {
            console.log(`ConnectAbility onConnect remote is proxy: ${(remote instanceof rpc.RemoteProxy)}`);
        },
        onDisconnect: (element) => {
            console.log(`ConnectAbility onDisconnect element.deviceId : ${element.deviceId}`)
        },
        onFailed: (code) => {
            console.error(`featureAbilityTest ConnectAbility onFailed errCode : ${code}`)
        },
    },
);

featureAbility.disconnectAbility7+

disconnectAbility(connection: number, callback:AsyncCallback<void>): void

断开与指定ServiceAbility的连接(callback形式)。

系统能力:SystemCapability.Ability.AbilityRuntime.FAModel

说明:本接口仅可在FA模型下使用,Stage模型下需使用UIAbilityContext.disconnectAbility

参数:

参数名类型必填说明
connectionnumber表示断开连接的ServiceAbility的ID。
callbackAsyncCallback<void>以callback的形式返回断开连接结果

错误码:

错误码ID错误信息
-102Failed to acquire ability object.
-105Type of ability is invalid.
16000011The context does not exist.
16000050Internal error.

错误码详细介绍请参考errcode-ability

示例:

import rpc from '@ohos.rpc';
import featureAbility from '@ohos.ability.featureAbility';

let connectId = featureAbility.connectAbility(
    {
        bundleName: 'com.ix.ServiceAbility',
        abilityName: 'com.ix.ServiceAbility.ServiceAbilityA',
    },
    {
        onConnect: (element, remote) => {
            console.log(`ConnectAbility onConnect remote is proxy: ${(remote instanceof rpc.RemoteProxy)}`);
        },
        onDisconnect: (element) => {
            console.log(`ConnectAbility onDisconnect element.deviceId : ${element.deviceId}`);
        },
        onFailed: (code) => {
            console.error(`featureAbilityTest ConnectAbility onFailed errCode : ${code}`);
        },
    },
);

featureAbility.disconnectAbility(connectId, (error) => {
    if (error && error.code !== 0) {
        console.error(`disconnectAbility fail, connectId: ${connectId}, error: ${JSON.stringify(error)}`);
    } else {
        console.log(`disconnectAbility success, connectId: ${connectId}`);
    }
});

featureAbility.disconnectAbility7+

disconnectAbility(connection: number): Promise<void>

断开与指定ServiceAbility的连接(Promise形式)。

系统能力:SystemCapability.Ability.AbilityRuntime.FAModel

说明:本接口仅可在FA模型下使用,Stage模型下需使用UIAbilityContext.disconnectAbility

参数:

参数名类型必填说明
connectionnumber表示断开连接的ServiceAbility的ID。

返回值:

类型说明
Promise<void>Promise对象。无返回结果的Promise对象。

错误码:

错误码ID错误信息
-102Failed to acquire ability object.
-105Type of ability is invalid.
16000011The context does not exist.
16000050Internal error.

错误码详细介绍请参考errcode-ability

示例:

import rpc from '@ohos.rpc';
import featureAbility from '@ohos.ability.featureAbility';
import { BusinessError } from '@ohos.base';

let connectId = featureAbility.connectAbility(
    {
        bundleName: 'com.ix.ServiceAbility',
        abilityName: 'com.ix.ServiceAbility.ServiceAbilityA',
    },
    {
        onConnect: (element, remote) => {
            console.log(`ConnectAbility onConnect remote is proxy: ${(remote instanceof rpc.RemoteProxy)}`);
        },
        onDisconnect: (element) => {
            console.log(`ConnectAbility onDisconnect element.deviceId : ${element.deviceId}`);
        },
        onFailed: (code) => {
            console.error(`featureAbilityTest ConnectAbility onFailed errCode : ${code}`);
        },
    },
);

featureAbility.disconnectAbility(connectId).then(() => {
    console.log('disconnectAbility success')
}).catch((error: BusinessError)=>{
    console.error(`featureAbilityTest result errCode : ${error.code}`);
});

featureAbility.getWindow7+

getWindow(callback: AsyncCallback<window.Window>): void

获取当前Ability对应的窗口(callback形式)。

系统能力:SystemCapability.Ability.AbilityRuntime.FAModel

说明:本接口仅可在FA模型下使用,Stage模型下需使用window.getLastWindow

参数:

参数名类型必填说明
callbackAsyncCallback<window.Window>callback形式返回当前Ability对应的窗口。

错误码:

错误码ID错误信息
-102Failed to acquire ability object.

示例:

import featureAbility from '@ohos.ability.featureAbility';
import { BusinessError } from '@ohos.base';
import window from '@ohos.window';

export default {

  onActive() {
    console.info("onActive");
    featureAbility.getWindow((error: BusinessError, data: window.Window) => {
      if (error && error.code !== 0) {
        console.error(`getWindow fail, error: ${JSON.stringify(error)}`);
      } else {
        console.log(`getWindow success, data: ${typeof(data)}`);
      }
    });
  }
}

featureAbility.getWindow7+

getWindow(): Promise<window.Window>

获取当前Ability对应的窗口(Promise形式)。

系统能力:SystemCapability.Ability.AbilityRuntime.FAModel

说明:本接口仅可在FA模型下使用,Stage模型下需使用window.getLastWindow

返回值:

类型说明
Promise<window.Window>Promise形式返回当前Ability对应的窗口。

错误码:

错误码ID错误信息
-102Failed to acquire ability object.

示例:

import featureAbility from '@ohos.ability.featureAbility';
import { BusinessError } from '@ohos.base';
import window from '@ohos.window';

export default {

  onActive() {
    console.info("onActive");
    featureAbility.getWindow().then((data: window.Window) => {
        console.log(`getWindow success, data: ${typeof(data)}`);
    }).catch((error: BusinessError)=>{
        console.error(`getWindow fail, error: ${JSON.stringify(error)}`);
    });
  }
}

AbilityWindowConfiguration

表示当前Ability对应的窗口配置项,使用时通过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

表示当前Ability对应的窗口属性,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属性的参数名。

DataAbilityOperationType

表示数据的操作类型。DataAbility批量操作数据时可以通过该枚举值指定操作类型

系统能力:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.FAModel

名称说明
TYPE_INSERT7+1插入类型。
TYPE_UPDATE7+2修改类型。
TYPE_DELETE7+3删除类型。
TYPE_ASSERT7+4声明类型。

最后

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。 

这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。

希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

鸿蒙(HarmonyOS NEXT)最新学习路线

  •  HarmonOS基础技能

  • HarmonOS就业必备技能 
  •  HarmonOS多媒体技术

  • 鸿蒙NaPi组件进阶

  • HarmonOS高级技能

  • 初识HarmonOS内核 
  • 实战就业级设备开发

有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。

获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

《鸿蒙 (OpenHarmony)开发入门教学视频》

《鸿蒙生态应用开发V2.0白皮书》

图片

《鸿蒙 (OpenHarmony)开发基础到实战手册》

OpenHarmony北向、南向开发环境搭建

图片

 《鸿蒙开发基础》

  • ArkTS语言
  • 安装DevEco Studio
  • 运用你的第一个ArkTS应用
  • ArkUI声明式UI开发
  • .……

图片

 《鸿蒙开发进阶》

  • Stage模型入门
  • 网络管理
  • 数据管理
  • 电话服务
  • 分布式应用开发
  • 通知与窗口管理
  • 多媒体技术
  • 安全技能
  • 任务管理
  • WebGL
  • 国际化开发
  • 应用测试
  • DFX面向未来设计
  • 鸿蒙系统移植和裁剪定制
  • ……

图片

《鸿蒙进阶实战》

  • ArkTS实践
  • UIAbility应用
  • 网络案例
  • ……

图片

 获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料

总结

总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值