1e41f4b71Sopenharmony_ci# Want Overview
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ci## Definition and Usage of Want
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ci[Want](../reference/apis-ability-kit/js-apis-app-ability-want.md) is an object that transfers information between application components. It is often used as a parameter of [startAbility()](../reference/apis-ability-kit/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability). For example, when UIAbilityA needs to start UIAbilityB and transfer some data to UIAbilityB, it can use the **want** parameter in **startAbility()** to transfer the data.
7e41f4b71Sopenharmony_ci
8e41f4b71Sopenharmony_ci**Figure 1** Want usage 
9e41f4b71Sopenharmony_ci![usage-of-want](figures/usage-of-want.png)  
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ci## Types of Want
13e41f4b71Sopenharmony_ci
14e41f4b71Sopenharmony_ci- **Explicit Want**: If **abilityName** and **bundleName** are specified in the [want](../reference/apis-ability-kit/js-apis-app-ability-want.md) parameter when starting an application component, explicit Want is used.
15e41f4b71Sopenharmony_ci  
16e41f4b71Sopenharmony_ci    Explicit Want is usually used to start another application component in the same application. You can use the bundle name and ability name in the **Want** object to specify the target component. When there is an explicit object to process the request, explicit Want is a simple and effective way to start the target application component.
17e41f4b71Sopenharmony_ci    > **NOTE**
18e41f4b71Sopenharmony_ci    >
19e41f4b71Sopenharmony_ci    > In API version 11 and earlier versions, you can use explicit Want to start the UIAbility of another application.
20e41f4b71Sopenharmony_ci    > Since API version 12, the explicit Want launch mode is no longer supported for inter-application redirection. You must use **openLink** to start the UIAbility of another application.
21e41f4b71Sopenharmony_ci  
22e41f4b71Sopenharmony_ci  ```ts
23e41f4b71Sopenharmony_ci  import { Want } from '@kit.AbilityKit';
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci  let wantInfo: Want = {
26e41f4b71Sopenharmony_ci    deviceId: '', // An empty deviceId indicates the local device.
27e41f4b71Sopenharmony_ci    bundleName: 'com.example.myapplication',
28e41f4b71Sopenharmony_ci    abilityName: 'FuncAbility',
29e41f4b71Sopenharmony_ci  }
30e41f4b71Sopenharmony_ci  ```
31e41f4b71Sopenharmony_ci  
32e41f4b71Sopenharmony_ci- **Implicit Want**: If **abilityName** is not specified in the [want](../reference/apis-ability-kit/js-apis-app-ability-want.md) parameter when starting an application component, implicit Want is used.
33e41f4b71Sopenharmony_ci  
34e41f4b71Sopenharmony_ci  Implicit Want can be used when the object used to process the request is unclear and the current application wants to use a capability (defined by the [skills tag](../quick-start/module-configuration-file.md#skills)) provided by another application. The system matches all applications that declare to support the capability. For example, for a link open request, the system matches all applications that support the request and provides the available ones for users to select.
35e41f4b71Sopenharmony_ci  
36e41f4b71Sopenharmony_ci  
37e41f4b71Sopenharmony_ci  ```ts
38e41f4b71Sopenharmony_ci  import { Want } from '@kit.AbilityKit';
39e41f4b71Sopenharmony_ci
40e41f4b71Sopenharmony_ci  let wantInfo: Want = {
41e41f4b71Sopenharmony_ci    // Uncomment the line below if you want to implicitly query data only in the specific bundle.
42e41f4b71Sopenharmony_ci    // bundleName: 'com.example.myapplication',
43e41f4b71Sopenharmony_ci    action: 'ohos.want.action.search',
44e41f4b71Sopenharmony_ci    // entities can be omitted.
45e41f4b71Sopenharmony_ci    entities: [ 'entity.system.browsable' ],
46e41f4b71Sopenharmony_ci    uri: 'https://www.test.com:8080/query/student',
47e41f4b71Sopenharmony_ci    type: 'text/plain',
48e41f4b71Sopenharmony_ci  };
49e41f4b71Sopenharmony_ci  ```
50e41f4b71Sopenharmony_ci  
51e41f4b71Sopenharmony_ci  > **NOTE**
52e41f4b71Sopenharmony_ci  > - Depending on the application component matching result, the following cases may be possible when you attempt to use implicit Want to start the application component.
53e41f4b71Sopenharmony_ci  >   - No application component is matched. The startup fails.
54e41f4b71Sopenharmony_ci  >   - An application component that meets the conditions is matched. That application component is started.
55e41f4b71Sopenharmony_ci  >   - Multiple [UIAbility](../reference/apis-ability-kit/js-apis-app-ability-uiAbility.md) components that meet the conditions are matched. A dialog box is displayed for users to select one of them.
56e41f4b71Sopenharmony_ci  > 
57e41f4b71Sopenharmony_ci  > - In the scenario for starting the ServiceExtensionAbility component:
58e41f4b71Sopenharmony_ci  >   - If the [want](../reference/apis-ability-kit/js-apis-app-ability-want.md) parameter passed in contains **abilityName**, the ServiceExtensionAbility component cannot be started through implicit Want.
59e41f4b71Sopenharmony_ci  > 
60e41f4b71Sopenharmony_ci  >   - If the **want** parameter passed in contains **bundleName**, the **startServiceExtensionAbility()** method can be used to implicitly start the ServiceExtensionAbility component. By default, the ServiceExtensionAbility component with the highest priority is returned. If all the matching ServiceExtensionAbility components have the same priority, the first ServiceExtensionAbility component is returned.
61