# Run Process

Executes the specified external application.

Action available for the following operating systems:

![](https://3821468174-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LrTlA1suFa5N48x_83N%2F-McsX314mrjQ3P9-BQN7%2F-McsYNWc88h_Sm8kJQcc%2FAndroid%20e%20Windows.PNG?alt=media\&token=d553ed95-e59a-4cc6-9d43-64d113182e78)

### Parameters

*Parameters For Windows*

* **Process** *\<string> -* Complete path to the application you want to launch.
* **Parameters** *\<string> -* Input parameters to pass to the application to launch.
* **Wait** *\<numeric> -* Indicates if Kalipso should wait for the end of execution or not.
* **Target Return Value** *\<target> -* Control or Variable where to store the returned value of the application's execution.

*Parameters For Android*

**Parameters**

* **Action** *\<string> -* Name of the action to perform. On Android this parameter is also known as "**Intent**".
* **Data URL** *\<string> -* Used to indicate the path of a file when the goal is to access an external file.
* **Data Type** *\<string> -* Used to indicate the "mime" file type of **Data URL**, for example "application / pdf".
* **Launch Type** *\<numeric> -* Indicates how the "**Intent**" should behave when to launch. The possible options for this parameter are:
  * **Wait** - Waits for the end of the execution.
  * **Don't Wait** - Doesn't wait for the end of the execution.
  * **Broadcast** - Broadcasts through an emitter and a receiver.
* **Category** *\<string> -* Used to indicate Intent category. You can specify multiple categories separated by the CR (carriage return) character.
* **Package Name***\<string> -* Used to indicate Intent package name.
* **Class Name***\<string> -* Used to indicate Intent class name. It is only used if **Package Name** is also specified.
* **Flags***\<string> -* Used to set the Intent Flags. See remarks for more information.
* **Name** *\<string> -* Name of the first Parameter to pass to the application.
* **Is Array** *\<numeric> -* Indicates if the parameter to pass to the application should be sent as an array or not or as an arrayList. The possible options for this parameter are:
  * Yes
  * No
  * ArrayList
* **Type** *\<numeric> -* Type of the first Parameter to pass to the application.
* **Value** *\<type depends on **Type**> -* Value of the first Parameter to pass to the application.
* **Element Separator** *\<string> -* Character to be used as separator.

**Targets**

* **Target Return Code** *\<target> -* Control or Variable where to store the returned code of the application's execution.

**Target Return Values**

* **Name** *\<string> -* Name of the first Return Value returned by the application. Specify "data" to get the data of the intent and use type **String** or **URI**
* **Type** *\<numeric> -* Type of the first Return Value returned by the application.
* **Target** *\<target> -* Control or Variable where to store the first Return Value returned by the application.

{% hint style="info" %}
In Android, if you can't find the **Action** to execute, you can try to run adb shell and use pm list packages -f command to list apks and packages. The package name should be the **Action** to execute.
{% endhint %}

{% hint style="info" %}
In Android to get the data of the intent create a return value with name **data** and type **String** or **URI.**
{% endhint %}

{% hint style="info" %}
In Android, when passing a File as parameter to be updated by the called App, if the file does not exist, it may fail, specially in the most recent versions of Android (10 or higher), so you should create a file, even if empty or with dummy data, and then pass that file to be written.
{% endhint %}

{% hint style="info" %}
URI parameters passed in this action may be given general read/write access, so be carefulll when passing files with sensitive data.
{% endhint %}

{% hint style="info" %}
**Flags** is only use for Android Intent.

If not specified Kalipso will add flag FLAG\_ACTIVITY\_NEW\_TASK if the **Lauch Type** parameter is not **Wait**. Kalipso will also add FLAG\_GRANT\_READ\_URI\_PERMISSION and FLAG\_GRANT\_WRITE\_URI\_PERMISSION to allow for file access when files are used in the parameters.

If specified, then Kalipso will add no flag. You can add multiple flags by separating them by the **CR** character. For example if you want to use FLAG\_ACTIVITY\_NEW\_TASK and FLAG\_ACTIVITY\_EXCLUDE\_FROM\_RECENTS then you can send for example: "268435456" + CR + "8388608". Check Android Developer documentation for the flag values.
{% endhint %}

{% hint style="info" %}
On Android, in the **Parameters**, you can use Bundles if in the Parameter **Name** you pass the Bundle Name + CR + Parameter Name.\
For example: "MyTestBundle" + CR + "speed"\
You pass in a parameter named "MyTestBundle" a Bundle with an entry containing "speed" as the entry name and the value will be whatever is in the **Value** parameter.\
You can pass in multiple parameters using the same bundle name to have multiple entries in the same Bundle.\
Ex:<br>
{% endhint %}

<figure><img src="https://3821468174-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LrTlA1suFa5N48x_83N%2Fuploads%2Fg8Q9bics9I3RxpSoKd4y%2Fimage.png?alt=media&#x26;token=f876c3a0-fb66-4b38-9cbb-38b744c236bf" alt=""><figcaption></figcaption></figure>
