1# @ohos.app.businessAbilityRouter (Business Ability Router) (System API)
2
3The **businessAbilityRouter** module provides APIs for you to query the business ability information of applications installed on the device. It provides a unified template for you to register standard services by type. Based on the information, a system application or third-party application can obtain services that meet certain criteria and select a proper service. The module also provides unified rules to manage redirection between applications and services. It prevents arbitrary switching between the foreground and background and avoids the distribution of third-party applications by means of redirection.
4
5> **NOTE**
6>
7> The initial APIs of this module are supported since API version 10. Newly added APIs will be marked with a superscript to indicate their earliest API version.
8>
9>The APIs provided by this module are system APIs.
10
11## Modules to Import
12
13``` ts
14import businessAbilityRouter from '@ohos.app.businessAbilityRouter';
15```
16
17## Required Permissions
18
19| Permission                                      | APL    | Description                |
20| ------------------------------------------ | ------------ | -------------------- |
21| ohos.permission.GET_BUNDLE_INFO_PRIVILEGED | system_basic | Permission to query information about all bundles. |
22
23For details about the APL, see [Basic Concepts in the Permission Mechanism](../../security/AccessToken/app-permission-mgmt-overview.md#basic-concepts-in-the-permission-mechanism).
24
25## BusinessType
26
27Enumerates the types of business abilities.
28
29**System capability**: SystemCapability.Ability.AbilityRuntime.Core
30
31**System API**: This is a system API.
32
33| Name       | Value  | Description                                |
34| ----------- | ---- | ------------------------------------ |
35| SHARE       | 0    | Business ability of the share type. |
36| UNSPECIFIED | 255  | Business ability of an unspecified type.  |
37
38## BusinessAbilityFilter
39
40Describes the criteria for filtering business abilities.
41
42**System capability**: SystemCapability.Ability.AbilityRuntime.Core
43
44**System API**: This is a system API.
45
46| Name        | Type        | Read-only | Mandatory | Description                                  |
47| ------------ | ------------ | ---- | ---- | -------------------------------------- |
48| businessType | [BusinessType](#businesstype) | No  | Yes  | Type of the business ability.          |
49| mimeType     | string       | No  | No  | MIME type supported by the business ability. |
50| uri          | string       | No  | No  | URI supported by the business ability.       |
51
52## businessAbilityRouter.queryBusinessAbilityInfo
53
54queryBusinessAbilityInfo(filter: BusinessAbilityFilter, callback: AsyncCallback\<Array\<BusinessAbilityInfo\>\>): void;
55
56Obtains the business ability information based on the specified filter criteria. This API uses an asynchronous callback to return the result. If the operation is successful, the business ability information is returned; otherwise, an error object is returned.
57
58**Required permissions**: ohos.permission.GET_BUNDLE_INFO_PRIVILEGED
59
60**System capability**: SystemCapability.Ability.AbilityRuntime.Core
61
62**System API**: This is a system API.
63
64**Parameters**
65
66| Name      | Type    | Mandatory  | Description                                   |
67| ----------- | ------ | ---- | --------------------------------------- |
68| filter | [BusinessAbilityFilter](#businessabilityfilter) | Yes   | Object used to filter the business abilities. |
69| callback | AsyncCallback\<Array\<[BusinessAbilityInfo](js-apis-bundleManager-businessAbilityInfo-sys.md#businessabilityinfo)\>\> | Yes | Callback used to return the result. If the operation is successful, the business ability information that meets the filter criteria is returned; otherwise, an error object is returned. |
70
71**Error codes**
72
73For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
74
75| ID | Error Message |
76| ------- | -------- |
77| 201 | Permission denied. |
78| 202 | Not System App. Interface caller is not a system app. |
79| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. 3. Parameter verification failed. |
80
81**Example**
82
83```ts
84import businessAbilityRouter from '@ohos.app.businessAbilityRouter';
85import { BusinessError } from '@ohos.base';
86
87let filter: businessAbilityRouter.BusinessAbilityFilter = {businessType: businessAbilityRouter.BusinessType.SHARE};
88
89try {
90    businessAbilityRouter.queryBusinessAbilityInfo(filter, (error, data) => {
91        if (error) {
92            console.error('queryBusinessAbilityInfo failed ' + error.message);
93            return;
94        }
95        console.info('queryBusinessAbilityInfo success');
96    });
97} catch (error) {
98    let message = (error as BusinessError).message;
99    console.error('queryBusinessAbilityInfo failed ' + message);
100}
101```
102
103## businessAbilityRouter.queryBusinessAbilityInfo
104
105queryBusinessAbilityInfo(filter: BusinessAbilityFilter): Promise\<Array\<BusinessAbilityInfo\>\>;
106
107Obtains the business ability information based on the specified filter criteria. This API uses a promise to return the result. If the operation is successful, the business ability information is returned; otherwise, an error object is returned.
108
109**Required permissions**: ohos.permission.GET_BUNDLE_INFO_PRIVILEGED
110
111**System capability**: SystemCapability.Ability.AbilityRuntime.Core
112
113**System API**: This is a system API.
114
115**Parameters**
116
117| Name      | Type                             | Mandatory  | Description                                   |
118| ----------- | ------------------------------- | ---- | --------------------------------------- |
119| filter | [BusinessAbilityFilter](#businessabilityfilter) | Yes   | Object used to filter the business abilities. |
120
121**Return value**
122
123| Type                                                        | Description                                       |
124| ------------------------------------------------------------ | ------------------------------------------- |
125| Promise\<Array\<[BusinessAbilityInfo](js-apis-bundleManager-businessAbilityInfo-sys.md#businessabilityinfo)\>\> | Promise used to return the business ability information that meets the filter criteria. |
126
127**Error codes**
128
129For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
130
131| ID | Error Message |
132| ------- | -------- |
133| 201 | Permission denied. |
134| 202 | Not System App. Interface caller is not a system app. |
135| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. 3. Parameter verification failed. |
136
137**Example**
138
139```ts
140import businessAbilityRouter from '@ohos.app.businessAbilityRouter';
141import { BusinessError } from '@ohos.base';
142
143let filter: businessAbilityRouter.BusinessAbilityFilter = {businessType: businessAbilityRouter.BusinessType.SHARE};
144
145try {
146    businessAbilityRouter.queryBusinessAbilityInfo(filter)
147        .then(() => {
148            console.info('queryBusinessAbilityInfo success');
149        }).catch((error: BusinessError) => {
150            console.error('queryBusinessAbilityInfo failed ' + error.message);
151        });
152} catch (error) {
153    let message = (error as BusinessError).message;
154    console.error('queryBusinessAbilityInfo failed ' + message);
155}
156```
157