> For the complete documentation index, see [llms.txt](https://docs.talsec.app/freerasp/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.talsec.app/freerasp/freemalwaredetection/integration-guide/handling-results.md).

# Handling Results

When the background evaluation process completes and identifies one or more threats, the detection engine triggers a callback to your application. This section details how to intercept this callback, parse the threat data, and implement dynamic remediation strategies.

***

## Receiving the Callback

The results of the scan are delivered asynchronously via the standard Threat Callback mechanism. Because the engine automatically filters out safe system applications and caches benign results, this callback is only fired if a suspicious application is actively detected on the device.

{% tabs %}
{% tab title="Android" %}
Implement the `onMalwareDetected` method from the `ThreatListener.ThreatDetected` interface:

```kotlin
override fun onMalwareDetected(suspiciousApps: List<SuspiciousAppInfo>?) {
    suspiciousApps?.forEach { app ->
        Log.w("Talsec", "Detected malware: ${app.packageInfo.packageName}")
    }
}
```

{% endtab %}

{% tab title="Flutter" %}
Provide the `onMalware` callback within your `ThreatCallback` object:

```dart
final callback = ThreatCallback(
    onMalware: (List<SuspiciousAppInfo?> suspiciousApps) {
        for (var app in suspiciousApps) {
            print('Detected malware: ${app?.packageInfo.packageName}');
        }
    },
    // Other callbacks...
);
```

{% endtab %}

{% tab title="React Native" %}
Add the malware callback to your actions object:

```typescript
import { type SuspiciousAppInfo } from 'freerasp-react-native';

const actions = {
    // Other threat callbacks...
    malware: (suspiciousApps: SuspiciousAppInfo[]) => {
        console.log('Detected suspicious apps: ', suspiciousApps);
    },
};
```

{% endtab %}

{% tab title="Capacitor" %}
Add the malware callback to your actions object:

```javascript
import { type SuspiciousAppInfo } from 'capacitor-freerasp'; 

const actions = {
    // Other threat callbacks...
    malware: (suspiciousApps: SuspiciousAppInfo[]) => {
        console.log('Detected suspicious apps: ', suspiciousApps);
    },
};
```

{% endtab %}

{% tab title="Cordova" %}
Add the malware callback to your actions object:

```javascript
const actions = {
    // Other threat callbacks...
    malware: (suspiciousApps) => {
        console.log('Detected suspicious apps: ', suspiciousApps);
    },
};
```

{% endtab %}

{% tab title="KMP" %}
Collect `FreeRaspEvent.Malware` events from the `threatEvents` SharedFlow:

```kotlin
FreeraspKMP.threatEvents
    .filterIsInstance<FreeRaspEvent.Malware>()
    .collect { event ->
        event.suspiciousAppInfo.forEach { app ->
            println("Detected malware: ${app.packageInfo.packageName}")
        }
    }
```

{% endtab %}
{% endtabs %}

***

## Interpreting SuspiciousAppInfo

For each identified threat, the engine generates a `SuspiciousAppInfo` data object containing metadata about the offending application and the specific rules it violated.

The structure of this object depends on the version of the module integrated into your project.

### Modern (V2) API

{% hint style="info" %}
**Compatibility**

**Android:** `18.1.0` | **Flutter:** `8.0.0` | **React Native:** `5.0.0` |

**Capacitor:** `3.0.0` | **Cordova:** `9.0.0` | **KMP:** `2.0.0`
{% endhint %}

{% tabs %}
{% tab title="Android" %}

<table><thead><tr><th width="254.9765625">Property</th><th width="183.48046875">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>packageInfo.packageName</code></td><td><code>String</code></td><td>Unique package identifier.</td></tr><tr><td><code>packageInfo.appName</code></td><td><code>String?</code></td><td>Public display name.</td></tr><tr><td><code>packageInfo.version</code></td><td><code>String?</code></td><td>versionName string.</td></tr><tr><td><code>packageInfo.installerStore</code></td><td><code>String?</code></td><td>Installer package name (e.g., <code>com.android.vending</code>).</td></tr><tr><td><code>packageInfo.appIcon</code></td><td><code>String?</code></td><td>Base64 encoded icon (<code>null</code> by default).</td></tr><tr><td><code>reasons</code></td><td><code>Set&#x3C;String></code></td><td>Rules violated (<code>blocklist</code>, <code>installSource</code>, <code>suspiciousPermission</code>).</td></tr><tr><td><code>permissions</code></td><td><code>Set&#x3C;String>?</code></td><td>Exact permissions that triggered detection (if flagged with <code>suspiciousPermission</code>).</td></tr></tbody></table>
{% endtab %}

{% tab title="Flutter" %}

<table><thead><tr><th width="206.80859375">Property</th><th width="183.48046875">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>packageInfo.packageName</code></td><td><code>String</code></td><td>Unique package identifier.</td></tr><tr><td><code>packageInfo.appName</code></td><td><code>String?</code></td><td>Public display name.</td></tr><tr><td><code>packageInfo.version</code></td><td><code>String?</code></td><td>versionName string.</td></tr><tr><td><code>packageInfo.installerStore</code></td><td><code>String?</code></td><td>Installer package name (e.g., <code>com.android.vending</code>).</td></tr><tr><td><code>packageInfo.appIcon</code></td><td><code>String?</code></td><td>Base64 encoded icon (<code>null</code> by default).</td></tr><tr><td><code>reasons</code></td><td><code>List&#x3C;String></code></td><td>Rules violated (<code>blocklist</code>, <code>installSource</code>, <code>suspiciousPermission</code>).</td></tr><tr><td><code>permissions</code></td><td><code>List&#x3C;String>?</code></td><td>Exact permissions that triggered detection (if flagged with <code>suspiciousPermission</code>).</td></tr></tbody></table>
{% endtab %}

{% tab title="React Native" %}

<table><thead><tr><th width="206.80859375">Property</th><th width="183.48046875">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>packageInfo.packageName</code></td><td><code>string</code></td><td>Unique package identifier.</td></tr><tr><td><code>packageInfo.appName</code></td><td><code>string?</code></td><td>Public display name.</td></tr><tr><td><code>packageInfo.version</code></td><td><code>string?</code></td><td>versionName string.</td></tr><tr><td><code>packageInfo.installerStore</code></td><td><code>string?</code></td><td>Installer package name (e.g., <code>com.android.vending</code>).</td></tr><tr><td><code>packageInfo.appIcon</code></td><td><code>string?</code></td><td>Base64 encoded icon (<code>null</code> by default).</td></tr><tr><td><code>reasons</code></td><td><code>string[]</code></td><td>Rules violated (<code>blocklist</code>, <code>installSource</code>, <code>suspiciousPermission</code>).</td></tr><tr><td><code>permissions</code></td><td><code>string[]?</code></td><td>Exact permissions that triggered detection (if flagged with <code>suspiciousPermission</code>).</td></tr></tbody></table>
{% endtab %}

{% tab title="Capacitor" %}

<table><thead><tr><th width="206.80859375">Property</th><th width="183.359375">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>packageInfo.packageName</code></td><td><code>string</code></td><td>Unique package identifier.</td></tr><tr><td><code>packageInfo.appName</code></td><td><code>string?</code></td><td>Public display name.</td></tr><tr><td><code>packageInfo.version</code></td><td><code>string?</code></td><td>versionName string.</td></tr><tr><td><code>packageInfo.installerStore</code></td><td><code>string?</code></td><td>Installer package name (e.g., <code>com.android.vending</code>).</td></tr><tr><td><code>packageInfo.appIcon</code></td><td><code>string?</code></td><td>Base64 encoded icon (<code>null</code> by default).</td></tr><tr><td><code>reasons</code></td><td><code>string[]</code></td><td>Rules violated (<code>blocklist</code>, <code>installSource</code>, <code>suspiciousPermission</code>).</td></tr><tr><td><code>permissions</code></td><td><code>string[]?</code></td><td>Exact permissions that triggered detection (if flagged with <code>suspiciousPermission</code>).</td></tr></tbody></table>
{% endtab %}

{% tab title="Cordova" %}

<table><thead><tr><th width="206.80859375">Property</th><th width="183.48046875">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>packageInfo.packageName</code></td><td><code>string</code></td><td>Unique package identifier.</td></tr><tr><td><code>packageInfo.appName</code></td><td><code>string?</code></td><td>Public display name.</td></tr><tr><td><code>packageInfo.version</code></td><td><code>string?</code></td><td>versionName string.</td></tr><tr><td><code>packageInfo.installerStore</code></td><td><code>string?</code></td><td>Installer package name (e.g., <code>com.android.vending</code>).</td></tr><tr><td><code>packageInfo.appIcon</code></td><td><code>string?</code></td><td>Base64 encoded icon (<code>null</code> by default).</td></tr><tr><td><code>reasons</code></td><td><code>string[]</code></td><td>Rules violated (<code>blocklist</code>, <code>installSource</code>, <code>suspiciousPermission</code>).</td></tr><tr><td><code>permissions</code></td><td><code>string[]?</code></td><td>Exact permissions that triggered detection (if flagged with <code>suspiciousPermission</code>).</td></tr></tbody></table>
{% endtab %}

{% tab title="KMP" %}

<table><thead><tr><th width="254.9765625">Property</th><th width="183.48046875">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>packageInfo.packageName</code></td><td><code>String</code></td><td>Unique package identifier.</td></tr><tr><td><code>packageInfo.appName</code></td><td><code>String?</code></td><td>Public display name.</td></tr><tr><td><code>packageInfo.version</code></td><td><code>String?</code></td><td>versionName string.</td></tr><tr><td><code>packageInfo.installerStore</code></td><td><code>String?</code></td><td>Installer package name (e.g., <code>com.android.vending</code>).</td></tr><tr><td><code>packageInfo.appIcon</code></td><td><code>String?</code></td><td>Base64 encoded icon (<code>null</code> by default).</td></tr><tr><td><code>reasons</code></td><td><code>Set&#x3C;String></code></td><td>Rules violated (<code>blocklist</code>, <code>installSource</code>, <code>suspiciousPermission</code>).</td></tr><tr><td><code>permissions</code></td><td><code>Set&#x3C;String>?</code></td><td>Exact permissions that triggered detection (if flagged with <code>suspiciousPermission</code>).</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

{% hint style="info" %}
**Premium Tier Extension**

The Premium tier adds a fourth reason: `onlineMalwareDatabase` — returned when the application is confirmed as malicious by the App Reputation API cloud database.
{% endhint %}

### Legacy (V1) API

{% hint style="info" %}
**Compatibility**

**Android:** `<18.1.0` | **Flutter:** `<8.0.0` | **React Native:** `<5.0.0` |

**Capacitor:** `<3.0.0` | **Cordova:** `<9.0.0` | **KMP:** `<2.0.0`
{% endhint %}

{% tabs %}
{% tab title="Android" %}

<table><thead><tr><th width="130.97265625">Property</th><th width="136.82421875">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>packageInfo</code></td><td><code>PackageInfo</code></td><td>The native Android <a href="https://developer.android.com/reference/android/content/pm/PackageInfo"><code>PackageInfo</code></a> object. Provides comprehensive OS-level metadata about the flagged application (e.g., version, signatures, installed location).</td></tr><tr><td><code>reason</code></td><td><code>String</code></td><td>The primary threat signal (<code>blocklist</code>, <code>installSource</code>, or <code>suspiciousPermission</code>). Returns only the highest-priority match (<code>suspiciousPermission</code> overrides <code>installSource</code>).</td></tr></tbody></table>
{% endtab %}

{% tab title="Flutter" %}

<table><thead><tr><th width="250.87890625">Property</th><th width="107.23828125">Type</th><th width="336.78515625">Description</th></tr></thead><tbody><tr><td><code>packageInfo.packageName</code></td><td><code>String</code></td><td>Unique package identifier.</td></tr><tr><td><code>packageInfo.appName</code></td><td><code>String?</code></td><td>Public display name.</td></tr><tr><td><code>packageInfo.version</code></td><td><code>String?</code></td><td>versionName string.</td></tr><tr><td><code>packageInfo.installationSource</code></td><td><code>String?</code></td><td>Installer package name (e.g., com.android.vending).</td></tr><tr><td><code>packageInfo.appIcon</code></td><td><code>String?</code></td><td>Base64 encoded icon (null by default).</td></tr><tr><td><code>reason</code></td><td><code>String</code></td><td>The primary threat signal (<code>blocklist</code>, <code>installSource</code>, or <code>suspiciousPermission</code>). Returns only the highest-priority match (<code>suspiciousPermission</code> overrides <code>installSource</code>).</td></tr></tbody></table>
{% endtab %}

{% tab title="React Native" %}

<table><thead><tr><th width="250.87890625">Property</th><th width="107.23828125">Type</th><th width="336.78515625">Description</th></tr></thead><tbody><tr><td><code>packageInfo.packageName</code></td><td><code>string</code></td><td>Unique package identifier.</td></tr><tr><td><code>packageInfo.appName</code></td><td><code>string?</code></td><td>Public display name.</td></tr><tr><td><code>packageInfo.version</code></td><td><code>string?</code></td><td>versionName string.</td></tr><tr><td><code>packageInfo.installerStore</code></td><td><code>string?</code></td><td>Installer package name (e.g., com.android.vending).</td></tr><tr><td><code>packageInfo.appIcon</code></td><td><code>string?</code></td><td>Base64 encoded icon (null by default).</td></tr><tr><td><code>reason</code></td><td><code>string</code></td><td>The primary threat signal (<code>blocklist</code>, <code>installSource</code>, or <code>suspiciousPermission</code>). Returns only the highest-priority match (<code>suspiciousPermission</code> overrides <code>installSource</code>).</td></tr></tbody></table>
{% endtab %}

{% tab title="Capacitor" %}

<table><thead><tr><th width="250.87890625">Property</th><th width="107.23828125">Type</th><th width="336.78515625">Description</th></tr></thead><tbody><tr><td><code>packageInfo.packageName</code></td><td><code>string</code></td><td>Unique package identifier.</td></tr><tr><td><code>packageInfo.appName</code></td><td><code>string?</code></td><td>Public display name.</td></tr><tr><td><code>packageInfo.version</code></td><td><code>string?</code></td><td>versionName string.</td></tr><tr><td><code>packageInfo.installerStore</code></td><td><code>string?</code></td><td>Installer package name (e.g., com.android.vending).</td></tr><tr><td><code>packageInfo.appIcon</code></td><td><code>string?</code></td><td>Base64 encoded icon (null by default).</td></tr><tr><td><code>reason</code></td><td><code>string</code></td><td>The primary threat signal (<code>blocklist</code>, <code>installSource</code>, or <code>suspiciousPermission</code>). Returns only the highest-priority match (<code>suspiciousPermission</code> overrides <code>installSource</code>).</td></tr></tbody></table>
{% endtab %}

{% tab title="Cordova" %}

<table><thead><tr><th width="250.87890625">Property</th><th width="107.23828125">Type</th><th width="336.78515625">Description</th></tr></thead><tbody><tr><td><code>packageInfo.packageName</code></td><td><code>string</code></td><td>Unique package identifier.</td></tr><tr><td><code>packageInfo.appName</code></td><td><code>string?</code></td><td>Public display name.</td></tr><tr><td><code>packageInfo.version</code></td><td><code>string?</code></td><td>versionName string.</td></tr><tr><td><code>packageInfo.installerStore</code></td><td><code>string?</code></td><td>Installer package name (e.g., com.android.vending).</td></tr><tr><td><code>packageInfo.appIcon</code></td><td><code>string?</code></td><td>Base64 encoded icon (null by default).</td></tr><tr><td><code>reason</code></td><td><code>string</code></td><td>The primary threat signal (<code>blocklist</code>, <code>installSource</code>, or <code>suspiciousPermission</code>). Returns only the highest-priority match (<code>suspiciousPermission</code> overrides <code>installSource</code>).</td></tr></tbody></table>
{% endtab %}

{% tab title="KMP" %}

<table><thead><tr><th width="250.87890625">Property</th><th width="107.23828125">Type</th><th width="336.78515625">Description</th></tr></thead><tbody><tr><td><code>packageInfo.packageName</code></td><td><code>String</code></td><td>Unique package identifier.</td></tr><tr><td><code>packageInfo.appName</code></td><td><code>String?</code></td><td>Public display name.</td></tr><tr><td><code>packageInfo.version</code></td><td><code>String?</code></td><td>versionName string.</td></tr><tr><td><code>packageInfo.installerStore</code></td><td><code>String?</code></td><td>Installer package name (e.g., com.android.vending).</td></tr><tr><td><code>packageInfo.appIcon</code></td><td><code>String?</code></td><td>Base64 encoded icon (null by default).</td></tr><tr><td><code>reason</code></td><td><code>String</code></td><td>The primary threat signal (<code>blocklist</code>, <code>installSource</code>, or <code>suspiciousPermission</code>). Returns only the highest-priority match (<code>suspiciousPermission</code> overrides <code>installSource</code>).</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

***

## Retrieving the App Icon

By default, the `appIcon` property is omitted to reduce the computation time required to serialize the payload. If your application requires displaying a threat warning dialog with visual context, retrieve the icon asynchronously.

{% tabs %}
{% tab title="Android" %}
Retrieve the icon natively using the Android `PackageManager`:

```kotlin
val drawable = context.packageManager.getApplicationIcon(app.packageInfo.packageName)
```

{% hint style="warning" %}
**Exception Handling Required**

The `getApplicationIcon` method throws a `PackageManager.NameNotFoundException` if the system cannot locate the package. Wrap this call in a try-catch block.
{% endhint %}
{% endtab %}

{% tab title="Flutter" %}

```dart
import 'dart:convert';

final decodedImage = base64.decode(app.packageInfo.appIcon!);
Image.memory(decodedImage);
```

{% hint style="warning" %}
**Exception Handling Required**

Calls to `getAppIcon()` will throw a native exception if the user uninstalls the target application before the fetch completes. Wrap the execution in a try-catch block and implement a fallback UI.
{% endhint %}
{% endtab %}

{% tab title="React Native" %}

```typescript
import { getAppIcon, type SuspiciousAppInfo } from 'freerasp-react-native';

const retrieveIcon = async (app: SuspiciousAppInfo) => {
    try {
        const iconBase64 = await getAppIcon(app.packageInfo.packageName);
        app.packageInfo.appIcon = iconBase64;
    } catch (error) {
        console.error('Failed to retrieve icon', error);
    }
};
```

{% hint style="warning" %}
**Exception Handling Required**

The `getAppIcon()` Promise will reject if the target application is uninstalled before the fetch completes. Wrap the await call in a try-catch block.
{% endhint %}
{% endtab %}

{% tab title="Capacitor" %}

```javascript
import { getAppIcon } from 'capacitor-freerasp';

const retrieveIcon = async (app) => {
    try {
        const iconBase64 = await getAppIcon(app.packageInfo.packageName);
        app.packageInfo.appIcon = iconBase64;
    } catch (error) {
        console.error('Failed to retrieve icon', error);
    }
};
```

{% hint style="warning" %}
**Exception Handling Required**

The `getAppIcon()` Promise will reject if the target application is uninstalled before the fetch completes. Wrap the await call in a try-catch block.
{% endhint %}
{% endtab %}

{% tab title="Cordova" %}

```javascript
const retrieveIcon = async (app) => {
    try {
        const iconBase64 = await getAppIcon(app.packageInfo.packageName);
        app.packageInfo.appIcon = iconBase64;
    } catch (error) {
        console.error('Failed to retrieve icon', error);
    }
};
```

{% hint style="info" %}
**Exception Handling Required**

The `getAppIcon()` Promise will reject if the target application is uninstalled before the fetch completes. Wrap the await call in a try-catch block.
{% endhint %}
{% endtab %}

{% tab title="KMP" %}

```kotlin
val iconBase64 = FreeraspKMP.getAppIcon(app.packageInfo.packageName)
```

{% hint style="warning" %}
**Exception Handling Required**

`getAppIcon()` throws a `FreeraspKMPException` if the target application cannot be found. Wrap the call in a try-catch block and implement a fallback UI.
{% endhint %}
{% endtab %}
{% endtabs %}

***

## Local Whitelisting

Because behavioral heuristics are probabilistic, legitimate tools may occasionally be flagged. To handle false positives, you can manually whitelist specific package names on the local device.

Once an application is whitelisted, the engine ignores it during all future evaluations until the detection configuration changes.

{% hint style="danger" %}
**Security Constraint**

Never automatically whitelist sideloaded applications based purely on their package name. Attackers frequently spoof popular package names to bypass filters. Always implement a UI flow requiring the user to explicitly confirm trust before executing the whitelist method.
{% endhint %}

{% tabs %}
{% tab title="Android" %}

```kotlin
Talsec.addToWhitelist(context, "com.trusted.sideloaded.app")
```

{% endtab %}

{% tab title="Flutter" %}

```dart
Talsec.instance.addToWhitelist("com.trusted.sideloaded.app");
```

{% endtab %}

{% tab title="React Native" %}

```typescript
import { addToWhitelist } from 'freerasp-react-native';

try {
    await addToWhitelist('com.trusted.sideloaded.app');
} catch (error) {
    console.error('Whitelist error: ', error);
}
```

{% endtab %}

{% tab title="Capacitor" %}

```javascript
import { addToWhitelist } from 'capacitor-freerasp';

try {
    await addToWhitelist('com.trusted.sideloaded.app');
} catch (error) {
    console.error('Whitelist error: ', error);
}
```

{% endtab %}

{% tab title="Cordova" %}

```javascript
try {
    await addToWhitelist('com.trusted.sideloaded.app');
} catch (error) {
    console.error('Whitelist error: ', error);
}
```

{% endtab %}

{% tab title="KMP" %}

```kotlin
FreeraspKMP.addToWhiteList("com.trusted.sideloaded.app")
```

{% endtab %}
{% endtabs %}

{% hint style="warning" %}
**Pre-Initialization Whitelisting**

If your logic requires whitelisting an application immediately upon the first launch, the `addToWhitelist` method must be executed before calling the core `Talsec.start()` initialization routine.
{% endhint %}

***

## Remediation

If you determine an application is an absolute threat and the user is unable to proceed, you can programmatically prompt them to uninstall it.

Because Android security constraints prevent applications from silently uninstalling other packages, remediation requires direct user intervention. The standard approach is to dispatch a native Intent that routes the user to the system's Application Details screen.

<div data-with-frame="true"><figure><img src="/files/1xlny9OxzAF2fBJZNgrN" alt="" width="320"><figcaption></figcaption></figure></div>

{% tabs %}
{% tab title="Android" %}

```kotlin
val intent = Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply {
    data = Uri.fromParts("package", app.packageInfo.packageName, null)
    flags = Intent.FLAG_ACTIVITY_NEW_TASK
}
context.startActivity(intent)
```

{% endtab %}

{% tab title="Flutter" %}

```dart
import 'package:android_intent_plus/android_intent.dart';

final intent = AndroidIntent(
    action: 'android.settings.APPLICATION_DETAILS_SETTINGS',
    data: 'package:${app.packageInfo.packageName}',
);
await intent.launch();
```

{% endtab %}

{% tab title="React Native" %}

```typescript
import IntentLauncher from 'react-native-intent-launcher';

IntentLauncher.startActivity({
    action: 'android.settings.APPLICATION_DETAILS_SETTINGS',
    data: `package:${app.packageInfo.packageName}`,
});
```

{% endtab %}

{% tab title="Capacitor" %}

```javascript
import { IntentLauncher } from '@capgo/capacitor-intent-launcher';

await IntentLauncher.startActivity({
    action: 'android.settings.APPLICATION_DETAILS_SETTINGS',
    data: `package:${app.packageInfo.packageName}`,
});
```

{% endtab %}

{% tab title="Cordova" %}

```javascript
window.plugins.intentShim.startActivity(
    {
        action: "android.settings.APPLICATION_DETAILS_SETTINGS",
        data: `package:${app.packageInfo.packageName}`
    },
    () => console.log('Settings launched successfully'),
    (err) => console.error('Failed to launch settings:', err)
);
```

{% endtab %}

{% tab title="KMP" %}

```kotlin
val intent = Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply {
    data = Uri.fromParts("package", app.packageInfo.packageName, null)
    flags = Intent.FLAG_ACTIVITY_NEW_TASK
}
context.startActivity(intent)
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.talsec.app/freerasp/freemalwaredetection/integration-guide/handling-results.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
