# FeatureAbility Module (JavaScript) > ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** > The initial APIs of this module are supported since API version 6. Newly added APIs will be marked with a superscript to indicate their earliest API version. ## Constraints APIs of the **FeatureAbility** module can be called only by Page abilities. ## Modules to Import ``` import featureAbility from '@ohos.ability.featureAbility' ``` ## featureAbility.startAbility startAbility(parameter: StartAbilityParameter, callback: AsyncCallback\): void Starts an ability. This method uses a callback to return the result. **System capability**: SystemCapability.Ability.AbilityRuntime.FAModel **Parameters** | Name | Type | Mandatory | Description | | --------- | ---------------------------------------- | ---- | -------------- | | parameter | [StartAbilityParameter](#startabilityparameter) | Yes | Ability to start.| | callback | AsyncCallback\ | Yes | Callback used to return the result. | **Example** ```javascript 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.startability", abilityName: "com.example.startability.MainAbility", uri: "" }, }, ); ``` ## featureAbility.startAbility startAbility(parameter: StartAbilityParameter): Promise\ Starts an ability. This method uses a promise to return the result. **System capability**: SystemCapability.Ability.AbilityRuntime.FAModel **Parameters** | Name | Type | Mandatory | Description | | --------- | ---------------------------------------- | ---- | -------------- | | parameter | [StartAbilityParameter](#startabilityparameter) | Yes | Ability to start.| **Example** ```javascript 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.startability", abilityName: "com.example.startability.MainAbility", uri: "" }, } ).then((data) => { console.info("==========================>startAbility=======================>"); }); ``` ## featureAbility.acquireDataAbilityHelper7+ acquireDataAbilityHelper(uri: string): DataAbilityHelper Obtains a **dataAbilityHelper** object. **System capability**: SystemCapability.Ability.AbilityRuntime.FAModel **Parameters** | Name | Type | Mandatory | Description | | ---- | ------ | ---- | ------------ | | uri | string | Yes | URI of the file to open.| **Return value** | Type | Description | | ----------------- | ------------------------------- | | DataAbilityHelper | A utility class used to help other abilities access the Data ability.| **Example** ```javascript import featureAbility from '@ohos.ability.featureAbility' featureAbility.acquireDataAbilityHelper( "dataability:///com.example.DataAbility" ) ``` ## featureAbility.startAbilityForResult7+ startAbilityForResult(parameter: StartAbilityParameter, callback: AsyncCallback\): void Starts an ability. This method uses a callback to return the execution result when the ability is destroyed. **System capability**: SystemCapability.Ability.AbilityRuntime.FAModel **Parameters** | Name | Type | Mandatory | Description | | --------- | ---------------------------------------- | ---- | -------------- | | parameter | [StartAbilityParameter](#startabilityparameter) | Yes | Ability to start.| | callback | AsyncCallback\<[AbilityResult](#abilityresult)> | Yes | Callback used to return the result. | **Example** ```javascript 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.featureabilitytest", abilityName: "com.example.featureabilitytest.MainAbility", uri:"" }, }, (err, data) => { console.info("err: " + JSON.stringfy(err) + "data: " + JSON.stringfy(data)) } ) ``` ## featureAbility.startAbilityForResult7+ startAbilityForResult(parameter: StartAbilityParameter): Promise\ Starts an ability. This method uses a promise to return the execution result when the ability is destroyed. **System capability**: SystemCapability.Ability.AbilityRuntime.FAModel **Parameters** | Name | Type | Mandatory | Description | | --------- | ---------------------------------------- | ---- | ------------- | | parameter | [StartAbilityParameter](#startabilityparameter) | Yes | Ability to start.| **Return value** | Type | Description | | ---------------------------------------- | ------- | | Promise\<[AbilityResult](#abilityresult)> | Promised returned with the execution result.| **Example** ```javascript 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.featureabilitytest", abilityName: "com.example.featureabilitytest.MainAbility", 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, }, }, requestCode: 2, }, ).then((data) => { console.info("==========================>startAbilityForResult=======================>"); }); ``` ## featureAbility.terminateSelfWithResult7+ terminateSelfWithResult(parameter: AbilityResult, callback: AsyncCallback\): void Destroys this Page ability, with the result code and data sent to the caller. This method uses a callback to return the result. **System capability**: SystemCapability.Ability.AbilityRuntime.FAModel **Parameters** | Name | Type | Mandatory | Description | | --------- | ------------------------------- | ---- | -------------- | | parameter | [AbilityResult](#abilityresult) | Yes | Ability to start.| | callback | AsyncCallback\ | Yes | Callback used to return the result. | **Example** ```javascript 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.featureabilitytest", abilityName: "com.example.featureabilitytest.MainAbility", 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, } }, }, ); ``` ## featureAbility.terminateSelfWithResult7+ terminateSelfWithResult(parameter: AbilityResult): Promise\ Destroys this Page ability, with the result code and data sent to the caller. This method uses a promise to return the result. **System capability**: SystemCapability.Ability.AbilityRuntime.FAModel **Parameters** | Name | Type | Mandatory | Description | | --------- | ------------------------------- | ---- | ------------- | | parameter | [AbilityResult](#abilityresult) | Yes | Ability to start.| **Return value** | Type | Description | | -------------- | --------------- | | Promise\ | Promise used to return the result.| **Example** ```javascript 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.featureabilitytest", abilityName: "com.example.featureabilitytest.MainAbility", 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\): void Checks whether the main window of this ability has the focus. This method uses a callback to return the result. **System capability**: SystemCapability.Ability.AbilityRuntime.FAModel **Parameters** | Name | Type | Mandatory | Description | | -------- | ----------------------- | ---- | ---------------------------------------- | | callback | AsyncCallback\ | Yes | Callback used to return the result.
Returns **true** if the main window of this ability has the focus; returns **false** otherwise.| **Example** ```javascript import featureAbility from '@ohos.ability.featureability'; featureAbility.hasWindowFocus() ``` ## featureAbility.hasWindowFocus7+ hasWindowFocus(): Promise\ Checks whether the main window of this ability has the focus. This method uses a promise to return the result. **System capability**: SystemCapability.Ability.AbilityRuntime.FAModel **Return value** | Type | Description | | ----------------- | ------------------------------------- | | Promise\ | Returns **true** if the main window of this ability has the focus; returns **false** otherwise.| **Example** ```javascript import featureAbility from '@ohos.ability.featureability'; featureAbility.hasWindowFocus().then((data) => { console.info("==========================>hasWindowFocus=======================>"); }); ``` ## featureAbility.getWant getWant(callback: AsyncCallback\): void Obtains the **Want** object sent from this ability. This method uses a callback to return the result. **System capability**: SystemCapability.Ability.AbilityRuntime.FAModel **Parameters** | Name | Type | Mandatory | Description | | -------- | ----------------------------- | ---- | --------- | | callback | AsyncCallback\<[Want](#want)> | Yes | Callback used to return the result.| **Example** ```javascript import featureAbility from '@ohos.ability.featureability'; featureAbility.getWant() ``` ## featureAbility.getWant getWant(): Promise\ Obtains the **Want** object sent from this ability. This method uses a promise to return the result. **System capability**: SystemCapability.Ability.AbilityRuntime.FAModel **Return value** | Type | Description | | ----------------------- | ---------------- | | Promise\<[Want](#want)> | Promise used to return the result.| **Example** ```javascript import featureAbility from '@ohos.ability.featureability'; featureAbility.getWant().then((data) => { console.info("==========================>getWantCallBack=======================>"); }); ``` ## featureAbility.getContext getContext(): Context Obtains the application context. **System capability**: SystemCapability.Ability.AbilityRuntime.FAModel **Return value** | Type | Description | | ------- | ---------- | | Context | Application context returned.| **Example** ```javascript import featureAbility from '@ohos.ability.featureability'; var context = featureAbility.getContext() context.getBundleName() ``` ## featureAbility.terminateSelf7+ terminateSelf(callback: AsyncCallback\): void Destroys this Page ability, with the result code and data sent to the caller. This method uses a callback to return the result. **System capability**: SystemCapability.Ability.AbilityRuntime.FAModel **Parameters** | Name | Type | Mandatory | Description | | -------- | -------------------- | ---- | -------- | | callback | AsyncCallback\ | Yes | Callback used to return the result.| **Example** ```javascript import featureAbility from '@ohos.ability.featureability'; featureAbility.terminateSelf() ``` ## featureAbility.terminateSelf7+ terminateSelf(): Promise\ Destroys this Page ability, with the result code and data sent to the caller. This method uses a promise to return the result. **System capability**: SystemCapability.Ability.AbilityRuntime.FAModel **Return value** | Type | Description | | -------------- | ---------------- | | Promise\ | Promise used to return the result.| **Example** ```javascript import featureAbility from '@ohos.ability.featureability'; featureAbility.terminateSelf().then((data) => { console.info("==========================>terminateSelfCallBack=======================>"); }); ``` ## featureAbility.connectAbility7+ connectAbility(request: Want, options:ConnectOptions): number Connects this ability to a specific Service ability. This method uses a callback to return the result. **System capability**: SystemCapability.Ability.AbilityRuntime.FAModel **Parameters** | Name | Type | Mandatory | Description | | ------- | -------------- | ---- | --------------------- | | request | [Want](#want) | Yes | Service ability to connect.| | options | ConnectOptions | Yes | Callback used to return the result. | Want **System capability**: SystemCapability.Ability.AbilityBase | Name | Readable/Writable| Type | Mandatory | Description | | ----------- | ---- | ------ | ---- | ---------------------------------------- | | deviceId | Read-only | string | No | Device ID of the Service ability to connect. The default value is the local device ID.| | bundleName | Read-only | string | Yes | Bundle name of the Service ability to connect. | | abilityName | Read-only | string | Yes | Class name of the Service ability to connect. | ConnectOptions **System capability**: SystemCapability.Ability.AbilityRuntime.Core | Name | Readable/Writable| Type | Mandatory | Description | | ------------ | ---- | -------- | ---- | ------------------------- | | onConnect | Read-only | function | Yes | Callback invoked when the connection is successful. | | onDisconnect | Read-only | function | Yes | Callback invoked when the connection fails. | | onFailed | Read-only | function | Yes | Callback invoked when **connectAbility** fails to be called.| **Return value** | Type | Description | | ------ | -------------------- | | number | Returns the ID of the Service ability connected.| **Example** ```javascript 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 connId = featureAbility.connectAbility( { deviceId: "", bundleName: "com.ix.ServiceAbility", abilityName: "ServiceAbilityA", }, { onConnect: onConnectCallback, onDisconnect: onDisconnectCallback, onFailed: onFailedCallback, }, ); ``` ## featureAbility.disconnectAbility7+ disconnectAbility(connection: number, callback:AsyncCallback\): void Disconnects this ability from a specific Service ability. This method uses a callback to return the result. **System capability**: SystemCapability.Ability.AbilityRuntime.FAModel **Parameters** | Name | Type | Mandatory | Description | | ---------- | -------------------- | ---- | ----------------------- | | connection | number | Yes | ID of the Service ability to disconnect.| | callback | AsyncCallback\ | Yes | Callback used to return the result. | **Example** ```javascript 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 connId = featureAbility.connectAbility( { bundleName: "com.ix.ServiceAbility", abilityName: "ServiceAbilityA", }, { onConnect: onConnectCallback, onDisconnect: onDisconnectCallback, onFailed: onFailedCallback, }, ); var result = featureAbility.disconnectAbility(connId, (error,data) => { console.log('featureAbilityTest DisConnectJsSameBundleName result errCode : ' + error.code + " data: " + data) }, ); ``` ## featureAbility.disconnectAbility7+ disconnectAbility(connection: number): Promise\ Disconnects this ability from a specific Service ability. This method uses a promise to return the result. **System capability**: SystemCapability.Ability.AbilityRuntime.FAModel **Parameters** | Name | Type | Mandatory | Description | | ---------- | ------ | ---- | ----------------------- | | connection | number | Yes | ID of the Service ability to disconnect.| **Return value** | Type | Description | | -------------- | --------------- | | Promise\ | Promise used to return the result.| **Example** ```javascript 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 connId = featureAbility.connectAbility( { bundleName: "com.ix.ServiceAbility", abilityName: "ServiceAbilityA", }, { onConnect: onConnectCallback, onDisconnect: onDisconnectCallback, onFailed: onFailedCallback, }, ); featureAbility.disconnectAbility(connId).then((error,data) => { console.log('featureAbilityTest result errCode : ' + error.code + " data: " + data); }); ``` ## featureAbility.getWindow7+ getWindow(callback: AsyncCallback\): void Obtains the window corresponding to this ability. This method uses a callback to return the result. **System capability**: SystemCapability.Ability.AbilityRuntime.FAModel **Parameters** | Name | Type | Mandatory| Description | | -------- | ----------------------------- | ---- | ----------------------------- | | callback | AsyncCallback\ | Yes | Callback used to return the window.| **Example** ```javascript featureAbility.getWindow() ``` ## featureAbility.getWindow7+ getWindow(): Promise\; Obtains the window corresponding to this ability. This method uses a promise to return the result. **System capability**: SystemCapability.Ability.AbilityRuntime.FAModel **Return value** | Type | Description | | ----------------------- | ----------------------------- | | Promise\ | Promise used to return the window.| **Example** ```javascript featureAbility.getWindow().then((data) => { console.info("=============getWindowPromise========== " + JSON.stringify(data)); }); ``` ## ConnectOptions.onConnect7+ onConnect(elementName: ElementName, remote: rpc.IRemoteObject): void; Callback invoked when the connection is successful. **System capability**: SystemCapability.Ability.AbilityRuntime.Core **Parameters** | Name | Type | Mandatory | Description | | ----------- | ----------------- | ---- | -------- | | elementName | ElementName | Yes | Element name. | | remote | rpc.IRemoteObject | Yes | RPC remote object.| **Example** ```javascript 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 connId = featureAbility.connectAbility( { deviceId: "", bundleName: "com.ix.ServiceAbility", abilityName: "ServiceAbilityA", }, { onConnect: onConnectCallback, onDisconnect: onDisconnectCallback, onFailed: onFailedCallback, }, ); ``` ## ConnectOptions.onDisconnect7+ onDisconnect(elementName: ElementName): void; Callback invoked when the connection fails. **System capability**: SystemCapability.Ability.AbilityRuntime.Core **Parameters** | Name | Type | Mandatory | Description | | ----------- | ----------- | ---- | ---- | | elementName | ElementName | Yes | Element name.| **Example** ```javascript 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 connId = featureAbility.connectAbility( { deviceId: "", bundleName: "com.ix.ServiceAbility", abilityName: "ServiceAbilityA", }, { onConnect: onConnectCallback, onDisconnect: onDisconnectCallback, onFailed: onFailedCallback, }, ); ``` ## ConnectOptions.onFailed7+ onFailed(code: number): void; Callback invoked when **connectAbility** fails to be called. **System capability**: SystemCapability.Ability.AbilityRuntime.Core **Parameters** | Name | Type | Mandatory | Description | | ---- | ------ | ---- | --------- | | code | number | Yes | Number type.| **Example** ```javascript 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 connId = featureAbility.connectAbility( { deviceId: "", bundleName: "com.ix.ServiceAbility", abilityName: "ServiceAbilityA", }, { onConnect: onConnectCallback, onDisconnect: onDisconnectCallback, onFailed: onFailedCallback, }, ); ``` ## AbilityWindowConfiguration The value is obtained through the **featureAbility.AbilityWindowConfiguration** API. **Example** ``` featureAbility.AbilityWindowConfiguration.WINDOW_MODE_UNDEFINED ``` **System capability**: SystemCapability.Ability.AbilityRuntime.FAModel | Name | Name | Description | | ---------------------------------------- | ---- | ---------------------------------------- | | WINDOW_MODE_UNDEFINED7+ | 0 | The Page ability is in an undefined window display mode.| | WINDOW_MODE_FULLSCREEN7+ | 1 | The Page ability is in full screen mode. | | WINDOW_MODE_SPLIT_PRIMARY7+ | 100 | The Page ability is displayed in the primary window when it is in split-screen mode.| | WINDOW_MODE_SPLIT_SECONDARY7+ | 101 | The Page ability is displayed in the secondary window when it is in split-screen mode.| | WINDOW_MODE_FLOATING7+ | 102 | The Page ability is displayed in floating window mode.| ## AbilityStartSetting The **AbilityStartSetting** attribute is an object defined as [key: string]: any. The key is a type of **AbilityStartSetting**, and the value is a type of **AbilityWindowConfiguration**. The value is obtained through the **featureAbility.AbilityStartSetting** API. **Example** ``` featureAbility.AbilityStartSetting.BOUNDS_KEY ``` **System capability**: SystemCapability.Ability.AbilityRuntime.FAModel | Name | Name | Description | | ---------------------------- | --------------- | ---------------------------------------- | | BOUNDS_KEY7+ | "abilityBounds" | Ability window size.| | WINDOW_MODE_KEY7+ | "windowMode" | Ability window display mode.| | DISPLAY_ID_KEY7+ | "displayId" | Display device ID.| ## ErrorCode Enumerates error codes. **System capability**: SystemCapability.Ability.AbilityRuntime.FAModel | Variable | Value | Description | | ------------------------------ | ---- | ---------------------------------------- | | NO_ERROR7+ | 0 | No error occurs.| | INVALID_PARAMETER7+ | -1 | Invalid parameter.| | ABILITY_NOT_FOUND7+ | -2 | The ability is not found.| | PERMISSION_DENY7+ | -3 | The request is denied.| ## DataAbilityOperationType Enumerates operation types of the Data ability. **System capability**: SystemCapability.Ability.AbilityRuntime.FAModel | Variable | Value | Description | | ------------------------ | ---- | ---------------------------------------- | | TYPE_INSERT7+ | 1 | Insert operation.| | TYPE_UPDATE7+ | 2 | Update operation.| | TYPE_DELETE7+ | 3 | Deletion operation.| | TYPE_ASSERT7+ | 4 | Assert operation.| ## AbilityResult **System capability**: SystemCapability.Ability.AbilityBase | Name | Readable/Writable| Type | Mandatory | Description | | ----------------------- | ---- | ------------- | ---- | ------------------------------------- | | resultCode7+ | Read-only | number | Yes | Result code returned after the ability is destroyed. The feature for defining error-specific result codes is coming soon.| | want7+ | Read-only | [Want](#want) | No | Data returned after the ability is destroyed. You can define the data to be returned. This parameter can be **null**. | ## StartAbilityParameter **System capability**: SystemCapability.AbilityRuntime.FAModel | Name | Readable/Writable| Type | Mandatory | Description | | ------------------- | ---- | -------------------- | ---- | -------------------------------------- | | want | Read-only | [Want](#want) | Yes | Information about the ability to start. | | abilityStartSetting | Read-only | {[key: string]: any} | No | Special attribute of the ability to start. This attribute can be passed in the method call.| ## Want **System capability**: SystemCapability.Ability.AbilityBase | Name | Readable/Writable| Type | Mandatory| Description | | -------------------------------- | -------- | -------------------- | ---- | ------------------------------------------------------------ | | deviceId | Read-only | string | No | ID of the device that runs the ability. | | bundleName | Read-only | string | No | Bundle name of the ability to start. If both **bundleName** and **abilityName** are specified in a **Want** object, the **Want** object can directly match the specified ability.| | abilityName | Read-only | string | No | Name of the ability to start. If both **bundleName** and **abilityName** are specified in a **Want** object, the **Want** object can directly match the specified ability.| | uri | Read-only | string | No | URI information to match. If **uri** is specified in a **Want** object, the **Want** object will match the specified URI information, including **scheme**, **schemeSpecificPart**, **authority**, and **path**.| | type | Read-only | string | No | MIME type, for example, text/plain or image/*. | | flags | Read-only | number | No | How the **Want** object will be handled. By default, a number is passed. For details, see [flags](#flags).| | action | Read-only | string | No | Action option. | | parameters | Read-only | {[key: string]: any} | No | List of parameters in the **Want** object. | | entities | Read-only | Array\ | No | List of entities. | | extensionAbilityName9+ | Read-only | string | No | Description of the Extension ability name in the **Want** object. | | extensionAbilityType9+ | Read-only | number | No | Description of the Extension ability type in the **Want** object. | ## flags **System capability**: SystemCapability.Ability.AbilityBase | Name | Name | Description | | ------------------------------------ | ---------- | ---------------------------------------- | | FLAG_AUTH_READ_URI_PERMISSION | 0x00000001 | Indicates the permission to read the URI. | | FLAG_AUTH_WRITE_URI_PERMISSION | 0x00000002 | Indicates the permission to write the URI. | | FLAG_ABILITY_FORWARD_RESULT | 0x00000004 | Returns the result to the ability. | | FLAG_ABILITY_CONTINUATION | 0x00000008 | Indicates whether the ability on the local device can be migrated to a remote device. | | FLAG_NOT_OHOS_COMPONENT | 0x00000010 | Indicates that a component does not belong to OHOS. | | FLAG_ABILITY_FORM_ENABLED | 0x00000020 | Indicates whether to enable an ability. | | FLAG_AUTH_PERSISTABLE_URI_PERMISSION | 0x00000040 | Indicates the permission to make the URI persistent. | | FLAG_AUTH_PREFIX_URI_PERMISSION | 0x00000080 | Indicates the permission to verify URIs by prefix matching. | | FLAG_ABILITYSLICE_MULTI_DEVICE | 0x00000100 | Supports cross-device startup in a distributed scheduler. | | FLAG_START_FOREGROUND_ABILITY | 0x00000200 | Indicates that the Service ability is started regardless of whether the host application has been started. | | FLAG_ABILITY_CONTINUATION_REVERSIBLE | 0x00000400 | Indicates that the migration is reversible. | | FLAG_INSTALL_ON_DEMAND | 0x00000800 | Indicates that the specific ability will be installed if it has not been installed. | | FLAG_INSTALL_WITH_BACKGROUND_MODE | 0x80000000 | Indicates that the specific ability will be installed in the background if it has not been installed. | | FLAG_ABILITY_CLEAR_MISSION | 0x00008000 | Clears other operation missions. This flag can be set for the **Want** object in the **startAbility** API passed to [ohos.app.Context](js-apis-ability-context.md) and must be used together with **flag_ABILITY_NEW_MISSION**.| | FLAG_ABILITY_NEW_MISSION | 0x10000000 | Creates a mission on the historical mission stack. | | FLAG_ABILITY_MISSION_TOP | 0x20000000 | Starts the mission on the top of the existing mission stack; creates an ability instance if no mission exists.|