# @ohos.bundle.bundleManager (bundleManager) The bundleManager module provides APIs for obtaining application information, including [BundleInfo](js-apis-bundleManager-bundleInfo.md), [ApplicationInfo](js-apis-bundleManager-applicationInfo.md), [AbilityInfo](js-apis-bundleManager-abilityInfo.md), and [ExtensionAbility](js-apis-bundleManager-extensionAbilityInfo.md). > **NOTE** > > The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version. ## Modules to Import ```ts import { bundleManager } from '@kit.AbilityKit'; ``` ## Enums ### BundleFlag Enumerates the bundle flags, which indicate the type of bundle information to obtain. **System capability**: SystemCapability.BundleManager.BundleFramework.Core | Name | Value | Description | | --------------------------------------------- | ---------- | ------------------------------------------------------------ | | GET_BUNDLE_INFO_DEFAULT | 0x00000000 | Used to obtain the default bundle information. The obtained information does not contain information about the signature, application, HAP module, ability, ExtensionAbility, or permission.
**Atomic service API**: This API can be used in atomic services since API version 11.| | GET_BUNDLE_INFO_WITH_APPLICATION | 0x00000001 | Used to obtain the bundle information with application information. The obtained information does not contain information about the signature, HAP module, ability, ExtensionAbility, or permission.
**Atomic service API**: This API can be used in atomic services since API version 11.| | GET_BUNDLE_INFO_WITH_HAP_MODULE | 0x00000002 | Used to obtain the bundle information with HAP module information. The obtained information does not contain information about the signature, application, ability, ExtensionAbility, or permission.
**Atomic service API**: This API can be used in atomic services since API version 11.| | GET_BUNDLE_INFO_WITH_ABILITY | 0x00000004 | Used to obtain the bundle information with ability information. The obtained information does not contain information about the signature, application, ExtensionAbility, or permission. It must be used together with **GET_BUNDLE_INFO_WITH_HAP_MODULE**.
**Atomic service API**: This API can be used in atomic services since API version 11.| | GET_BUNDLE_INFO_WITH_EXTENSION_ABILITY | 0x00000008 | Used to obtain the bundle information with ExtensionAbility information. The obtained information does not contain information about the signature, application, ability, or permission. It must be used together with **GET_BUNDLE_INFO_WITH_HAP_MODULE**.
**Atomic service API**: This API can be used in atomic services since API version 11.| | GET_BUNDLE_INFO_WITH_REQUESTED_PERMISSION | 0x00000010 | Used to obtain the bundle information with permission information. The obtained information does not contain information about the signature, application, HAP module, ability, or ExtensionAbility.
**Atomic service API**: This API can be used in atomic services since API version 11.| | GET_BUNDLE_INFO_WITH_METADATA | 0x00000020 | Used to obtain the metadata contained in the application, HAP module, ability, or ExtensionAbility information. It must be used together with **GET_BUNDLE_INFO_WITH_APPLICATION**, **GET_BUNDLE_INFO_WITH_HAP_MODULE**, **GET_BUNDLE_INFO_WITH_ABILITY**, and **GET_BUNDLE_INFO_WITH_EXTENSION_ABILITY**.
**Atomic service API**: This API can be used in atomic services since API version 11.| | GET_BUNDLE_INFO_WITH_DISABLE | 0x00000040 | Used to obtain the information about disabled bundles and abilities of a bundle. The obtained information does not contain information about the signature, application, HAP module, ability, ExtensionAbility, or permission.
**Atomic service API**: This API can be used in atomic services since API version 11.| | GET_BUNDLE_INFO_WITH_SIGNATURE_INFO | 0x00000080 | Used to obtain the bundle information with signature information. The obtained information does not contain information about the application, HAP module, ability, ExtensionAbility, or permission.
**Atomic service API**: This API can be used in atomic services since API version 11.| | GET_BUNDLE_INFO_WITH_MENU11+ | 0x00000100 | Used to obtain the bundle information with the file context menu configuration. It must be used together with **GET_BUNDLE_INFO_WITH_HAP_MODULE**.
**Atomic service API**: This API can be used in atomic services since API version 11.| | GET_BUNDLE_INFO_WITH_ROUTER_MAP12+ | 0x00000200 | Used to obtain the bundle information with the router map. It must be used together with **GET_BUNDLE_INFO_WITH_HAP_MODULE**.
**Atomic service API**: This API can be used in atomic services since API version 12.| | GET_BUNDLE_INFO_WITH_SKILL12+ | 0x00000800 | Used to obtain the bundle information with the skills. It must be used together with **GET_BUNDLE_INFO_WITH_HAP_MODULE**, **GET_BUNDLE_INFO_WITH_ABILITY**, and **GET_BUNDLE_INFO_WITH_EXTENSION_ABILITY**.
**Atomic service API**: This API can be used in atomic services since API version 12.| ### ExtensionAbilityType Enumerates the types of ExtensionAbilities. **System capability**: SystemCapability.BundleManager.BundleFramework.Core | Name| Value| Description| |:----------------:|:---:|-----| | FORM | 0 | [FormExtensionAbility](../apis-form-kit/js-apis-app-form-formExtensionAbility.md): provides APIs for widget development.
**Atomic service API**: This API can be used in atomic services since API version 11.| | WORK_SCHEDULER | 1 | [WorkSchedulerExtensionAbility](../apis-backgroundtasks-kit/js-apis-WorkSchedulerExtensionAbility.md): enables applications to execute non-real-time tasks when the system is idle.| | INPUT_METHOD | 2 | [InputMethodExtensionAbility](../apis-ime-kit/js-apis-inputmethod-extension-ability.md): provides APIs for developing input method applications.| | SERVICE | 3 | [ServiceExtensionAbility](js-apis-app-ability-serviceExtensionAbility-sys.md): enables applications to run in the background and provide services.| | ACCESSIBILITY | 4 | [AccessibilityExtensionAbility](https://developer.huawei.com/consumer/en/doc/harmonyos-references-V5/is-inner-application-accessibilityextensioncontext-V5): provides accessibility for access to and operations on the UI.| | DATA_SHARE | 5 | [DataShareExtensionAbility ](../apis-arkdata/js-apis-application-dataShareExtensionAbility-sys.md): enables applications to read and write data.| | FILE_SHARE | 6 | FileShareExtensionAbility: enables file sharing between applications. This ability is reserved and supported only by system applications.| | STATIC_SUBSCRIBER| 7 | [StaticSubscriberExtensionAbility ](../apis-basic-services-kit/js-apis-application-staticSubscriberExtensionAbility-sys.md): provides APIs for processing static events, such as the startup event.| | WALLPAPER | 8 | WallpaperExtensionAbility: provides APIs to implement the home screen wallpaper. This ability is reserved and supported only by system applications.| | BACKUP | 9 | [BackupExtensionAbility](../apis-core-file-kit/js-apis-application-backupExtensionAbility.md): provides APIs to implement application data backup and restore.| | WINDOW | 10 | [WindowExtensionAbility](../apis-arkui/js-apis-application-windowExtensionAbility-sys.md): allows system applications to display UIs of other applications.| | ENTERPRISE_ADMIN | 11 | [EnterpriseAdminExtensionAbility](../apis-mdm-kit/js-apis-EnterpriseAdminExtensionAbility.md): provides APIs for processing enterprise management events, such as application installation events on devices and events indicating too many incorrect screen-lock password attempts.| | THUMBNAIL | 13 | ThumbnailExtensionAbility: provides thumbnails for files. This ability is reserved and supported only by system applications.| | PREVIEW | 14 | PreviewExtensionAbility: provides APIs for file preview so that other applications can be embedded and displayed in the current application. This ability is reserved and supported only by system applications.| | PRINT10+ | 15 | PrintExtensionAbility: provides APIs for printing images. This ability is supported only by system applications.| | SHARE10+ | 16 | [ShareExtensionAbility](js-apis-app-ability-shareExtensionAbility.md): provides sharing service templates based on UIExtensionAbilities.| | PUSH10+ | 17 | PushExtensionAbility: provides APIs for pushing scenario-specific messages. This ability is reserved and supported only by system applications.| | DRIVER10+ | 18 | [DriverExtensionAbility](../apis-driverdevelopment-kit/js-apis-app-ability-driverExtensionAbility.md): provides APIs for the peripheral driver. This ability is supported only by system applications.| | ACTION10+ | 19 | [ActionExtensionAbility](js-apis-app-ability-actionExtensionAbility.md): provides custom action service templates based on UIExtensionAbilities.| | ADS_SERVICE11+ | 20 | AdsServiceExtensionAbility: provides background customized ad services for external systems. This ability is supported only by system applications.| | EMBEDDED_UI12+ | 21 | [EmbeddedUIExtensionAbility](js-apis-app-ability-embeddedUIExtensionAbility.md): provides ExtensionAbilities for the embeddable UI across process.| | INSIGHT_INTENT_UI12+ | 22 | **InsightIntentUIExtensionAbility**: provides APIs that enable applications to be called by Celia intents so as to be displayed in windows.| | UNSPECIFIED | 255 | No type is specified. It is used together with **queryExtensionAbilityInfo** to query all types of ExtensionAbilities.| ### PermissionGrantState Enumerates the permission grant states. **Atomic service API**: This API can be used in atomic services since API version 11. **System capability**: SystemCapability.BundleManager.BundleFramework.Core | Name| Value| Description| |:----------------:|:---:|:---:| | PERMISSION_DENIED| -1 | Permission denied.| | PERMISSION_GRANTED | 0 | Permission granted. | ### SupportWindowMode Enumerates the window modes supported by the ability. **Atomic service API**: This API can be used in atomic services since API version 11. **System capability**: SystemCapability.BundleManager.BundleFramework.Core | Name| Value| Description| |:----------------:|:---:|:---:| | FULL_SCREEN | 0 | A window in full-screen mode is supported.| | SPLIT | 1 | A window in split-screen mode is supported.| | FLOATING | 2 | A floating window is supported. | ### LaunchType Enumerates the launch types of the ability. **Atomic service API**: This API can be used in atomic services since API version 11. **System capability**: SystemCapability.BundleManager.BundleFramework.Core | Name| Value| Description| |:----------------:|:---:|:---:| | SINGLETON | 0 | The ability can have only one instance.| | MULTITON | 1 | The ability can have multiple instances.| | SPECIFIED | 2 | The ability can have one or multiple instances, depending on the internal service of the ability.| ### AbilityType Enumerates the types of abilities. **Model restriction**: This API can be used only in the FA model. **System capability**: SystemCapability.BundleManager.BundleFramework.Core | Name | Value | Description | | :-----: | ---- | :--------------------------------------------------------: | | PAGE | 1 | Ability that has the UI. FA developed using the Page template to provide the capability of interacting with users. | | SERVICE | 2 | Ability of the background service type, without the UI. PA developed using the Service template to provide the capability of running tasks in the background. | | DATA | 3 | PA developed using the Data template to provide unified data access for external systems.| ### DisplayOrientation Enumerates the display orientations of the ability. This property applies only to the ability using the Page template. **System capability**: SystemCapability.BundleManager.BundleFramework.Core | Name |Value|Description| |:----------------------------------|---|---| | UNSPECIFIED |0 |Unspecified. The orientation is determined by the system.
**Atomic service API**: This API can be used in atomic services since API version 11.| | LANDSCAPE |1 |Landscape.
**Atomic service API**: This API can be used in atomic services since API version 11.| | PORTRAIT |2 |Portrait.
**Atomic service API**: This API can be used in atomic services since API version 11.| | FOLLOW_RECENT |3 |The last display orientation is used.
**Atomic service API**: This API can be used in atomic services since API version 11.| | LANDSCAPE_INVERTED |4 |Reverse landscape.
**Atomic service API**: This API can be used in atomic services since API version 11.| | PORTRAIT_INVERTED |5 |Reverse portrait.
**Atomic service API**: This API can be used in atomic services since API version 11.| | AUTO_ROTATION |6 |Auto rotation.
**Atomic service API**: This API can be used in atomic services since API version 11.| | AUTO_ROTATION_LANDSCAPE |7 |Auto rotation in the horizontal direction.
**Atomic service API**: This API can be used in atomic services since API version 11.| | AUTO_ROTATION_PORTRAIT |8 |Auto rotation in the vertical direction.
**Atomic service API**: This API can be used in atomic services since API version 11.| | AUTO_ROTATION_RESTRICTED |9 |Switched-determined auto rotation.
**Atomic service API**: This API can be used in atomic services since API version 11.| | AUTO_ROTATION_LANDSCAPE_RESTRICTED |10|Switched-determined auto rotation in the horizontal direction.
**Atomic service API**: This API can be used in atomic services since API version 11.| | AUTO_ROTATION_PORTRAIT_RESTRICTED |11|Switched-determined auto rotation in the vertical direction.
**Atomic service API**: This API can be used in atomic services since API version 11.| | LOCKED |12|Locked.
**Atomic service API**: This API can be used in atomic services since API version 11.| | AUTO_ROTATION_UNSPECIFIED12+ |13|Auto rotation controlled by the switch and determined by the system.
**Atomic service API**: This API can be used in atomic services since API version 12.| | FOLLOW_DESKTOP12+ |14|Following the orientation of the home screen.
**Atomic service API**: This API can be used in atomic services since API version 12.| ### CompatiblePolicy10+ Defines the version compatibility type of the shared library. **Atomic service API**: This API can be used in atomic services since API version 11. **System capability**: SystemCapability.BundleManager.BundleFramework.Core | Name | Value | Description | | ---------------------- | ---- | -------------------------------- | | BACKWARD_COMPATIBILITY | 1 | The shared library is backward compatible.| ### ModuleType Enumerates the module types. **Atomic service API**: This API can be used in atomic services since API version 11. **System capability**: SystemCapability.BundleManager.BundleFramework.Core | Name | Value | Description | | ------- | ---- | -------------------- | | ENTRY | 1 | Main module of the application. | | FEATURE | 2 | Dynamic feature module of the application.| | SHARED | 3 | Dynamic shared library module of the application. | ### BundleType Enumerates the bundle types. **Atomic service API**: This API can be used in atomic services since API version 11. **System capability**: SystemCapability.BundleManager.BundleFramework.Core | Name | Value | Description | | -------------- | ---- | --------------- | | APP | 0 | The bundle is an application. | | ATOMIC_SERVICE | 1 | The bundle is an atomic service.| ### MultiAppModeType12+ Enumerates the types of the multi-app mode. **System capability**: SystemCapability.BundleManager.BundleFramework.Core | Name| Value| Description| |:----------------:|:---:|:---:| | UNSPECIFIED| 0 | Unspecified type.| | MULTI_INSTANCE | 1 | Multiton mode. A resident process does not support this value. | | APP_CLONE | 2 | App clone mode. | ## APIs ### bundleManager.getBundleInfoForSelf getBundleInfoForSelf(bundleFlags: number): Promise\ Obtains the bundle information of this bundle based on the given bundle flags. This API uses a promise to return the result. **Atomic service API**: This API can be used in atomic services since API version 11. **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | ----------- | ------ | ---- | --------------------- | | [bundleFlags](js-apis-bundleManager.md#bundleflag) | number | Yes | Type of the bundle information to obtain.| **Return value** | Type | Description | | ----------------------------------------------------------- | ------------------------------------- | | Promise\<[BundleInfo](js-apis-bundleManager-bundleInfo.md)> | Promise used to return the bundle information.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| **Example** ```ts // Obtain application info with metadataArray. import { bundleManager } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION | bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_METADATA; try { bundleManager.getBundleInfoForSelf(bundleFlags).then((data) => { hilog.info(0x0000, 'testTag', 'getBundleInfoForSelf successfully. Data: %{public}s', JSON.stringify(data)); }).catch((err: BusinessError) => { hilog.error(0x0000, 'testTag', 'getBundleInfoForSelf failed. Cause: %{public}s', err.message); }); } catch (err) { let message = (err as BusinessError).message; hilog.error(0x0000, 'testTag', 'getBundleInfoForSelf failed: %{public}s', message); } ``` ### bundleManager.getBundleInfoForSelf getBundleInfoForSelf(bundleFlags: number, callback: AsyncCallback\): void Obtains the bundle information of this bundle based on the given bundle flags. This API uses an asynchronous callback to return the result. **Atomic service API**: This API can be used in atomic services since API version 11. **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | ----------- | ------ | ---- | --------------------- | | [bundleFlags](js-apis-bundleManager.md#bundleflag) | number | Yes | Type of the bundle information to obtain.| | callback | AsyncCallback\<[BundleInfo](js-apis-bundleManager-bundleInfo.md)> | Yes| Callback used to return the result. If the operation is successful, **err** is **null** and **data** is the bundle information obtained. Otherwise, **err** is an error object.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| **Example** ```ts // Obtain ability info with permissions. import { bundleManager } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_HAP_MODULE | bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_ABILITY | bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_REQUESTED_PERMISSION; try { bundleManager.getBundleInfoForSelf(bundleFlags, (err, data) => { if (err) { hilog.error(0x0000, 'testTag', 'getBundleInfoForSelf failed: %{public}s', err.message); } else { hilog.info(0x0000, 'testTag', 'getBundleInfoForSelf successfully: %{public}s', JSON.stringify(data)); } }); } catch (err) { let message = (err as BusinessError).message; hilog.error(0x0000, 'testTag', 'getBundleInfoForSelf failed: %{public}s', message); } ``` ### bundleManager.getProfileByAbility getProfileByAbility(moduleName: string, abilityName: string, metadataName: string, callback: AsyncCallback\\>): void Obtains the JSON string array of the current application's configuration file in the [metadata](../../quick-start/module-configuration-file.md#metadata) based on a given module name, ability name, and metadata name. This API uses an asynchronous callback to return the result. > **NOTE** > > If the profile uses the resource reference format, the return value retains this format (for example, **$string:res_id**). You can obtain the referenced resources through related APIs of the resource management module. **Atomic service API**: This API can be used in atomic services since API version 11. **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | ------------ | ----------------------------- | ---- | ------------------------------------------------------------ | | moduleName | string | Yes | Module name. | | abilityName | string | Yes | Name of the UIAbility component. | | metadataName | string | Yes | Metadata name of the UIAbility component, that is, **name** of the **metadata** tag under **abilities** in the **module.json5** file. | | callback | AsyncCallback> | Yes | Callback used to return the result. If the operation is successful, **err** is **null** and **data** is the array of JSON strings obtained. Otherwise, **err** is an error object.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| | 17700002 | The specified moduleName is not existed. | | 17700003 | The specified abilityName is not existed. | | 17700024 | Failed to get the profile because there is no profile in the HAP. | | 17700026 | The specified bundle is disabled. | | 17700029 | The specified ability is disabled. | **Example** ```ts import { bundleManager } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; let moduleName = 'entry'; let abilityName = 'EntryAbility'; let metadataName = 'ability_metadata'; try { bundleManager.getProfileByAbility(moduleName, abilityName, metadataName, (err, data) => { if (err) { hilog.error(0x0000, 'testTag', 'getProfileByAbility failed. Cause: %{public}s', err.message); } else { hilog.info(0x0000, 'testTag', 'getProfileByAbility successfully: %{public}s', JSON.stringify(data)); } }); } catch (err) { let message = (err as BusinessError).message; hilog.error(0x0000, 'testTag', 'getProfileByAbility failed. Cause: %{public}s', message); } ``` ### bundleManager.getProfileByAbility getProfileByAbility(moduleName: string, abilityName: string, metadataName?: string): Promise\\> Obtains the JSON string array of the current application's configuration file in the [metadata](../../quick-start/module-configuration-file.md#metadata) based on a given module name, ability name, and metadata name. This API uses a promise to return the result. > **NOTE** > > If the profile uses the resource reference format, the return value retains this format (for example, **$string:res_id**). You can obtain the referenced resources through related APIs of the resource management module. **Atomic service API**: This API can be used in atomic services since API version 11. **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | ------------ | ------ | ---- | -------------------------- | | moduleName | string | Yes | Module name. | | abilityName | string | Yes | Name of the UIAbility component. | | metadataName | string | No | Metadata name of the UIAbility component, that is, **name** of the **metadata** tag under **abilities** in the **module.json5** file. The default value is null.| **Return value** | Type | Description | | ----------------------- | ------------------------------- | | Promise> | Promise used to return the array of JSON strings obtained.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| | 17700002 | The specified moduleName is not existed. | | 17700003 | The specified abilityName is not existed. | | 17700024 | Failed to get the profile because there is no profile in the HAP. | | 17700026 | The specified bundle is disabled. | | 17700029 | The specified ability is disabled. | **Example** ```ts import { bundleManager } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; let moduleName = 'entry'; let abilityName = 'EntryAbility'; try { bundleManager.getProfileByAbility(moduleName, abilityName).then((data) => { hilog.info(0x0000, 'testTag', 'getProfileByAbility successfully. Data: %{public}s', JSON.stringify(data)); }).catch((err: BusinessError) => { hilog.error(0x0000, 'testTag', 'getProfileByAbility failed. Cause: %{public}s', err.message); }); } catch (err) { let message = (err as BusinessError).message; hilog.error(0x0000, 'testTag', 'getProfileByAbility failed. Cause: %{public}s', message); } ``` ```ts import { bundleManager } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; let moduleName = 'entry'; let abilityName = 'EntryAbility'; let metadataName = 'ability_metadata'; try { bundleManager.getProfileByAbility(moduleName, abilityName, metadataName).then((data) => { hilog.info(0x0000, 'testTag', 'getProfileByAbility successfully. Data: %{public}s', JSON.stringify(data)); }).catch((err: BusinessError) => { hilog.error(0x0000, 'testTag', 'getProfileByAbility failed. Cause: %{public}s', err.message); }); } catch (err) { let message = (err as BusinessError).message; hilog.error(0x0000, 'testTag', 'getProfileByAbility failed. Cause: %{public}s', message); } ``` ### bundleManager.getProfileByAbilitySync10+ getProfileByAbilitySync(moduleName: string, abilityName: string, metadataName?: string): Array\ Obtains the JSON string array of the current application's configuration file in the [metadata](../../quick-start/module-configuration-file.md#metadata) based on a given module name, ability name, and metadata name. This API returns the result synchronously. The result value is a string array. > **NOTE** > > If the profile uses the resource reference format, the return value retains this format (for example, **$string:res_id**). You can obtain the referenced resources through related APIs of the resource management module. **Atomic service API**: This API can be used in atomic services since API version 11. **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | ------------ | ------ | ---- | -------------------------- | | moduleName | string | Yes | Module name. | | abilityName | string | Yes | Name of the UIAbility component. | | metadataName | string | No | Metadata name of the UIAbility component, that is, **name** of the **metadata** tag under **abilities** in the **module.json5** file. The default value is null.| **Return value** | Type | Description | | ----------------------- | ------------------------------- | | Array\ | An array of JSON strings.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| | 17700002 | The specified moduleName is not existed. | | 17700003 | The specified abilityName is not existed. | | 17700024 | Failed to get the profile because there is no profile in the HAP. | | 17700026 | The specified bundle is disabled. | | 17700029 | The specified ability is disabled. | **Example** ```ts import { bundleManager } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; let moduleName = 'entry'; let abilityName = 'EntryAbility'; try { let data = bundleManager.getProfileByAbilitySync(moduleName, abilityName); hilog.info(0x0000, 'testTag', 'getProfileByAbilitySync successfully. Data: %{public}s', JSON.stringify(data)); } catch (err) { let message = (err as BusinessError).message; hilog.error(0x0000, 'testTag', 'getProfileByAbilitySync failed. Cause: %{public}s', message); } ``` ```ts import { bundleManager } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; let moduleName: string = 'entry'; let abilityName: string = 'EntryAbility'; let metadataName: string = 'ability_metadata'; try { let data = bundleManager.getProfileByAbilitySync(moduleName, abilityName, metadataName); hilog.info(0x0000, 'testTag', 'getProfileByAbilitySync successfully. Data: %{public}s', JSON.stringify(data)); } catch (err) { let message = (err as BusinessError).message; hilog.error(0x0000, 'testTag', 'getProfileByAbilitySync failed. Cause: %{public}s', message); } ``` ### bundleManager.getProfileByExtensionAbility getProfileByExtensionAbility(moduleName: string, extensionAbilityName: string, metadataName: string, callback: AsyncCallback\\>): void Obtains the JSON string array of the current application's configuration file in the [metadata](../../quick-start/module-configuration-file.md#metadata) based on a given module name, ExtensionAbility name, and metadata name. This API uses an asynchronous callback to return the result. > **NOTE** > > If the profile uses the resource reference format, the return value retains this format (for example, **$string:res_id**). You can obtain the referenced resources through related APIs of the resource management module. **Atomic service API**: This API can be used in atomic services since API version 11. **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | -------------------- | ----------------------------- | ---- | ------------------------------------------------------------ | | moduleName | string | Yes | Module name. | | extensionAbilityName | string | Yes | Name of the ExtensionAbility component. | | metadataName | string | Yes | Metadata name of the ExtensionAbility component, that is, **name** of the **metadata** tag under **extensionAbilities** in the **module.json5** file. | | callback | AsyncCallback> | Yes | Callback used to return the result. If the operation is successful, **err** is **null** and **data** is the array of JSON strings obtained. Otherwise, **err** is an error object.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| | 17700002 | The specified moduleName is not existed. | | 17700003 | The specified extensionAbilityName not existed. | | 17700024 | Failed to get the profile because there is no profile in the HAP. | | 17700026 | The specified bundle is disabled. | **Example** ```ts import { bundleManager } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; let moduleName = 'entry'; let extensionAbilityName = 'com.example.myapplication.extension'; let metadataName = 'ability_metadata'; try { bundleManager.getProfileByExtensionAbility(moduleName, extensionAbilityName, metadataName, (err, data) => { if (err) { hilog.error(0x0000, 'testTag', 'getProfileByExtensionAbility failed: %{public}s', err.message); } else { hilog.info(0x0000, 'testTag', 'getProfileByExtensionAbility successfully: %{public}s', JSON.stringify(data)); } }); } catch (err) { let message = (err as BusinessError).message; hilog.error(0x0000, 'testTag', 'getProfileByExtensionAbility failed: %{public}s', message); } ``` ### bundleManager.getProfileByExtensionAbility getProfileByExtensionAbility(moduleName: string, extensionAbilityName: string, metadataName?: string): Promise\\> Obtains the JSON string array of the current application's configuration file in the [metadata](../../quick-start/module-configuration-file.md#metadata) based on a given module name, ExtensionAbility name, and metadata name. This API uses a promise to return the result. > **NOTE** > > If the profile uses the resource reference format, the return value retains this format (for example, **$string:res_id**). You can obtain the referenced resources through related APIs of the resource management module. **Atomic service API**: This API can be used in atomic services since API version 11. **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | -------------------- | ------ | ---- | ---------------------------------- | | moduleName | string | Yes | Module name. | | extensionAbilityName | string | Yes | Name of the ExtensionAbility component.| | metadataName | string | No | Metadata name of the ExtensionAbility component, that is, **name** of the **metadata** tag under **extensionAbilities** in the **module.json5** file. The default value is null. | **Return value** | Type | Description | | ----------------------- | ----------------------------------- | | Promise> | Promise used to return the array of JSON strings obtained.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| | 17700002 | The specified moduleName is not existed. | | 17700003 | The specified extensionAbilityName not existed. | | 17700024 | Failed to get the profile because there is no profile in the HAP. | | 17700026 | The specified bundle is disabled. | **Example** ```ts import { bundleManager } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; let moduleName = 'entry'; let extensionAbilityName = 'com.example.myapplication.extension'; let metadataName = 'ability_metadata'; try { bundleManager.getProfileByExtensionAbility(moduleName, extensionAbilityName).then((data) => { hilog.info(0x0000, 'testTag', 'getProfileByExtensionAbility successfully. Data: %{public}s', JSON.stringify(data)); }).catch((err: BusinessError) => { hilog.error(0x0000, 'testTag', 'getProfileByExtensionAbility failed. Cause: %{public}s', err.message); }); } catch (err) { let message = (err as BusinessError).message; hilog.error(0x0000, 'testTag', 'getProfileByExtensionAbility failed. Cause: %{public}s', message); } try { bundleManager.getProfileByExtensionAbility(moduleName, extensionAbilityName, metadataName).then((data) => { hilog.info(0x0000, 'testTag', 'getProfileByExtensionAbility successfully. Data: %{public}s', JSON.stringify(data)); }).catch((err: BusinessError) => { hilog.error(0x0000, 'testTag', 'getProfileByExtensionAbility failed. Cause: %{public}s', err.message); }); } catch (err) { let message = (err as BusinessError).message; hilog.error(0x0000, 'testTag', 'getProfileByExtensionAbility failed. Cause: %{public}s', message); } ``` ### bundleManager.getProfileByExtensionAbilitySync10+ getProfileByExtensionAbilitySync(moduleName: string, extensionAbilityName: string, metadataName?: string): Array\ Obtains the JSON string array of the current application's configuration file in the [metadata](../../quick-start/module-configuration-file.md#metadata) based on a given module name, ExtensionAbility name, and metadata name. This API returns the result synchronously. The result value is a string array. > **NOTE** > > If the profile uses the resource reference format, the return value retains this format (for example, **$string:res_id**). You can obtain the referenced resources through related APIs of the resource management module. **Atomic service API**: This API can be used in atomic services since API version 11. **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | -------------------- | ------ | ---- | ---------------------------------- | | moduleName | string | Yes | Module name. | | extensionAbilityName | string | Yes | Name of the ExtensionAbility component.| | metadataName | string | No | Metadata name of the ExtensionAbility component, that is, **name** of the **metadata** tag under **extensionAbilities** in the **module.json5** file. The default value is null. | **Return value** | Type | Description | | ----------------------- | ----------------------------------- | | Array\ | An array of JSON strings.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| | 17700002 | The specified moduleName is not existed. | | 17700003 | The specified extensionAbilityName not existed. | | 17700024 | Failed to get the profile because there is no profile in the HAP. | | 17700026 | The specified bundle is disabled. | **Example** ```ts import { bundleManager } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; let moduleName = 'entry'; let extensionAbilityName = 'com.example.myapplication.extension'; let metadataName = 'ability_metadata'; try { let data = bundleManager.getProfileByExtensionAbilitySync(moduleName, extensionAbilityName); hilog.info(0x0000, 'testTag', 'getProfileByExtensionAbilitySync successfully. Data: %{public}s', JSON.stringify(data)); } catch (err) { let message = (err as BusinessError).message; hilog.error(0x0000, 'testTag', 'getProfileByExtensionAbilitySync failed. Cause: %{public}s', message); } try { let data = bundleManager.getProfileByExtensionAbilitySync(moduleName, extensionAbilityName, metadataName); hilog.info(0x0000, 'testTag', 'getProfileByExtensionAbilitySync successfully. Data: %{public}s', JSON.stringify(data)); } catch (err) { let message = (err as BusinessError).message; hilog.error(0x0000, 'testTag', 'getProfileByExtensionAbilitySync failed. Cause: %{public}s', message); } ``` ### bundleManager.getBundleInfoForSelfSync10+ getBundleInfoForSelfSync(bundleFlags: number): BundleInfo Obtains the bundle information of this bundle based on the given bundle flags. This API returns the result synchronously. **Atomic service API**: This API can be used in atomic services since API version 11. **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | ----------- | ------ | ---- | --------------------- | | [bundleFlags](js-apis-bundleManager.md#bundleflag) | number | Yes | Type of the bundle information to obtain.| **Return value** | Type | Description | | ------------------------------------------------- | -------------------- | | [BundleInfo](js-apis-bundleManager-bundleInfo.md) | Bundle information obtained.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| **Example** ```ts import { bundleManager } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_REQUESTED_PERMISSION; try { let data = bundleManager.getBundleInfoForSelfSync(bundleFlags); hilog.info(0x0000, 'testTag', 'getBundleInfoForSelfSync successfully: %{public}s', JSON.stringify(data)); } catch (err) { let message = (err as BusinessError).message; hilog.error(0x0000, 'testTag', 'getBundleInfoForSelfSync failed: %{public}s', message); } ``` ### bundleManager.canOpenLink12+ canOpenLink(link: string): boolean Checks whether a link can be opened. The scheme of the specified link must be configured in the **querySchemes** field of the **module.json** file. **Atomic service API**: This API can be used in atomic services since API version 12. **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | ----------- | ------ | ---- | --------------------- | | link | string | Yes | Link to check.| **Return value** | Type | Description | | ------------------------------------------------- | -------------------- | | boolean | **true**: The link can be opened.
**false**: The link cannot be opened.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| | 17700055 | The specified link is invalid. | | 17700056 | The scheme of the specified link is not in the querySchemes. | **Example** ```ts import { bundleManager } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; try { let link = 'welink://'; let data = bundleManager.canOpenLink(link); hilog.info(0x0000, 'testTag', 'canOpenLink successfully: %{public}s', JSON.stringify(data)); } catch (err) { let message = (err as BusinessError).message; hilog.error(0x0000, 'testTag', 'canOpenLink failed: %{public}s', message); } ``` ### bundleManager.getLaunchWant13+ getLaunchWant(): Want Obtains the **Want** parameter used to start the application. **Atomic service API**: This API can be used in atomic services since API version 13. **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Return value** | Type | Description | | ----------------------------------- | ------------------------------------------- | | [Want](js-apis-app-ability-want.md) | Want object that contains the bundle name and ability name.| **Error codes** For details about the error codes, see [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ----------------------------- | | 17700072 | The launch want is not found. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; import { bundleManager } from '@kit.AbilityKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; try { let want = bundleManager.getLaunchWant(); hilog.info(0x0000, 'testTag', 'getLaunchWant ability name: %{public}s', want.abilityName); hilog.info(0x0000, 'testTag', 'getLaunchWant bundle name: %{public}s', want.bundleName); } catch (error) { let message = (error as BusinessError).message; hilog.error(0x0000, 'testTag', 'getLaunchWant failed: %{public}s', message); } ```