Skip to main content

App API

Description

IDroidAppAPI is designed to manage applications on an Android device in ZennoDroid. Provides methods for working with app data, accounts, notifications, cookies, and app state.

Most methods accept a packageName parameter — the app's package name. Use the Installed Apps tool to find the right name.

This follows the same logic as the App Actions block for the Lite/Pro and Enterprise versions.

Properties

Top

  • string Top { get; }
    The currently active app.

    Returns:
    The package name of the foreground app.

TopPid

  • uint TopPid { get; }
    PID of the current app.

    Returns:
    The process identifier.

Example

var app = instance.DroidInstance.App;

string top = app.Top;
uint TopPid = app.TopPid;

Methods

Open

  • void Open(string packageName)
    Launches an app.

    Parameters:

    • packageName — package name.
  • void Open(string packageName, string activityName)
    Launches an app with a specific Activity.

    Parameters:

    • packageName — package name;
    • activityName — Activity.
  • void Open(string packageName, string activityName, string action)
    Launches an app with a specific Activity and Intent Action.

    Parameters:

    • packageName — package name;
    • activityName — Activity name;
    • action — Intent action (e.g. android.intent.action.VIEW).

OpenAsRoot

  • void OpenAsRoot(string packageName, string activityName)
    Launches an app with root privileges and a specific Activity.

    Parameters:

    • packageName — package name;
    • activityName — Activity name.
  • void OpenAsRoot(string packageName, string activityName, string action)
    Launches an app with root privileges, a specific Activity and Intent Action.

    Parameters:

    • packageName — package name;
    • activityName — Activity name;
    • action — Intent action (e.g. android.intent.action.VIEW).

Example

//#1
var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // App name
app.Open(packageName); // Open the app

//#2
var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // App name
var activity = ".MainActivity"; // Chrome's main activity (not a working example!)
app.Open(packageName, activity); // Open app with specific activity

OpenUrl

  • void OpenUrl(string url)
    Opens a URL.

    Parameters:

    • url — URL to open.
  • void OpenUrl(string url, string packageName)
    Opens a URL through a specific app.

    Parameters:

    • url — URL to open;
    • packageName — app to use.

Example

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // App name
var url = "http://ya.ru";
app.OpenUrl(url, packageName); // Open Chrome and navigate to ya.ru

Close

  • void Close(string packageName)
    Closes an app.

    Parameters:

    • packageName — package name.

Example

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // App name
app.Close(packageName); // Close the app

CloseAll

  • void CloseAll()
    Closes all apps.

Example

var app = instance.DroidInstance.App;

app.CloseAll(); // Close all apps

Clean

  • void Clean(string packageName)
    Completely clears app data (resets the app to its post-install state).

    Parameters:

    • packageName — package name.

Example

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // App name
app.Clean(packageName); // Clear app data

CleanCache

  • void CleanCache(string packageName)
    Clears the app cache only.

    Parameters:

    • packageName — package name.

Example

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // App name
app.CleanCache(packageName); // Clear app cache

InstallApk

  • void InstallApk(string path)
    Installs an APK file.

    Parameters:

    • path — path to the APK.
  • void InstallApk(string path, bool useCache, bool useRoot)
    Installs an APK with additional options.

    Parameters:

    • path — path to the APK;
    • useCache — use cache during installation;
    • useRoot — use root access.

Example

var app = instance.DroidInstance.App;

var pathApk = @"\chrome.apk"; // APK file path
app.InstallApk(pathApk); // Install the app

IsInstalled

  • bool IsInstalled(string packageName)
    Checks whether an app is installed.

    Parameters:

    • packageName — package name.

    Returns:
    true if installed; otherwise false.

Example

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // App name
var isApk = app.IsInstalled(packageName); // Check if the app is installed

if (!isApk) // If not, install it
{
var pathApk = @"\chrome.apk"; // APK file path
app.InstallApk(pathApk); // Install the app
}

Delete

  • void Delete(string packageName)
    Uninstalls an app from the device.

    Parameters:

    • packageName — package name.

Example

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // App name
app.Delete(packageName); // Uninstall the app

Uid

  • string Uid(string packageName)
    Gets the app's UID.

    Parameters:

    • packageName — package name.

    Returns:
    The app's UID.

Example

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // App name
var uid = app.Uid(packageName); // Get app UID

DataDir

  • string DataDir(string packageName)
    Returns the app's data directory.

    Parameters:

    • packageName — package name.

    Returns:
    Path to the data directory (typically /data/data/...).

Example

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // App name
var directory = app.DataDir(packageName); // Get app data directory

AppDir

  • string AppDir(string packageName)
    Returns the path to the app's installation directory on the device.

    Parameters:

    • packageName — package name (e.g. com.android.chrome).

GetListPackages

  • string[] GetListPackages()
    Returns a list of all packages on the device.

    Returns:
    Array of package names.

Example

var app = instance.DroidInstance.App;

var packages = app.GetListPackages(); // Get list of all installed apps

GetListSystemPackages

  • string[] GetListSystemPackages()
    Returns a list of system apps.

    Returns:
    Array of package names.

Example

var app = instance.DroidInstance.App;

var packages = app.GetListSystemPackages(); // Get list of all system apps

GetListUserPackages

  • string[] GetListUserPackages()
    Returns a list of user-installed apps.

    Returns:
    Array of package names.

Example

var app = instance.DroidInstance.App;

var packages = app.GetListUserPackages(); // Get list of all user-installed apps

GetAllNotifications

  • string GetAllNotifications()
    Gets all device notifications in JSON format.

    Returns:
    A string with notification data.

Example

var app = instance.DroidInstance.App;

var json = app.GetAllNotifications(); // Get all notifications
project.Json.FromString(json); // Process JSON

GetAppNotifications

  • string GetAppNotifications(string packageName)
    Gets notifications for a specific app in JSON format.

    Parameters:

    • packageName — package name.

    Returns:
    A string with notifications.

Example

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // App name
var json = app.GetAppNotifications(packageName); // Get app notifications
project.Json.FromString(json); // Process JSON

ClearAllNotifications

  • void ClearAllNotifications()
    Clears all device notifications.

Example

var app = instance.DroidInstance.App;

app.ClearAllNotifications(); // Clear all notifications

ClearAppNotifications

  • void ClearAppNotifications(string packageName)
    Clears notifications for a specific app.

    Parameters:

    • packageName — package name.

Example

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // App name
app.ClearAppNotifications(packageName); // Clear app notifications

BackupAppData

  • void BackupAppData(string packageName, string pathToBackup)
    Creates a backup of app data.

    Parameters:

    • packageName — package name;
    • pathToBackup — path to save the backup.
  • void BackupAppData(string packageName, string pathToBackup, bool savePermissions)
    Creates a backup with the option to save app permissions.

    Parameters:

    • savePermissions — whether to save the current app permissions.
  • void BackupAppData(string packageName, string pathToBackup, bool savePermissions, string accountType)
    Extended backup with account type support.

    Parameters:

    • savePermissions — save permissions;
    • accountType — account type (e.g. com.yandex.passport, com.twitter.android.auth.login). The account type can be found using the GetAccounts(string packageName) method.

Example

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // App name
var pathSave = @"/dir/bakups/name_bakup"; // Where to save the backup
app.BackupAppData(packageName, pathSave); // Make a backup

RestoreAppData

  • void RestoreAppData(string packageName, string pathToBackup)
    Restores app data from a backup.

    Parameters:

    • packageName — package name;
    • pathToBackup — path to the backup.
  • void RestoreAppData(string packageName, string pathToBackup, bool restorePermissions)
    Restores app data with the option to restore permissions.

    Parameters:

    • restorePermissions — whether to restore app permissions.
  • void RestoreAppData(string packageName, string pathToBackup, bool restorePermissions, bool restoreAccount)
    Extended restore with the option to restore accounts.

    Parameters:

    • restorePermissions — restore permissions;
    • restoreAccount — restore linked accounts.

RestoreDetachedAppData

  • void RestoreDetachedAppData(string packageName, string pathToBackup, bool restorePermissions, bool restoreAccount)
    Restores app data without binding to the device on which the backup was made. Requires the ZennoBackup module.

    Parameters:

    • restorePermissions — restore permissions;
    • restoreAccount — restore linked accounts.

Example

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // App name
var pathLoad = @"/dir/bakups/name_bakup"; // Backup storage path
app.RestoreAppData(packageName, pathLoad); // Load the backup

GetCookie

  • string GetCookie(string packageName)
    Gets the app's cookies.

    Parameters:

    • packageName — package name.

    Returns:
    A string with cookies.

Example

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // App name
var cookies = app.GetCookie(packageName); // Get app cookies

GetCookiePath

  • string GetCookiePath(string packageName)
    Returns the path to the app's cookie file.

    Parameters:

    • packageName — package name.

    Returns:
    Path to the cookie file.

Example

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // App name
var pathCookie = app.GetCookiePath(packageName); // Get the cookie storage path

AddAccount

  • bool AddAccount(string name, string type, string password)
    Adds an account to the device.

    Parameters:

    • name — account name (e.g. email or login);
    • type — account type (e.g. com.google, com.facebook.auth.login);
    • password — account password.

    Returns:
    true if the account was added successfully; otherwise false.

  • bool AddAccount(string name, string type, string password, string metadata)
    Adds an account with additional metadata.

    Parameters:

    • name — account name;
    • type — account type;
    • password — password;
    • metadata — additional account data (e.g. tokens, auth parameters in JSON or string form).

    Returns:
    true if the account was added successfully; otherwise false.


GetAccounts

  • string GetAccounts(string packageName)
    Gets the list of accounts for an app in JSON format.

    Parameters:

    • packageName — package name.

    Returns:
    A string with account data.

  • string GetAccounts(string packageName, string type)
    Gets accounts of a specific type.

    Parameters:

    • packageName — package name;
    • type — account type (e.g. com.google).

    Returns:
    A string with accounts.

Example

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // App name
var json = app.GetAccounts(packageName); // Get app accounts

RemoveAccount

  • bool RemoveAccount(string name, string type)
    Removes an account.

    Parameters:

    • name — account name;
    • type — account type.

    Returns:
    true if successfully removed.

Accounts are often stored in the account manager, not in the app itself.

For example, Yandex Go, Yandex Mail, and Yandex Music share the same auth system. So deleting one of these apps won't remove access to the account from the other two.

In such cases you need to retrieve accounts from the app and forcibly remove them.


PatchFlutterLib

  • void PatchFlutterLib(string packageName, string proxy)
    Patches the Flutter library (libflutter.so) for a given app to redirect network traffic to BurpSuite for further analysis.

    Parameters:

    • packageName — package name;
    • proxy — proxy address (e.g. 10.0.2.2:8083).

RestoreFlutterLib

  • void RestoreFlutterLib(string packageName)
    Restores the original Flutter library (libflutter.so), reverting a previously applied patch.

    Parameters:

    • packageName — package name.

InjectScript

  • void InjectScript(string packageName, string script)
    Injects a JavaScript script into an app that runs before page load.

    Parameters:

    • packageName — package name;
    • script — script code.

Example

var app = "com.android.chrome";
var script = project.Variables["script"].Value;

instance.DroidInstance.App.Close(app); // Close the app

var lspHelper = new LSPosedHelper(instance.DroidInstance);
lspHelper.SetPackages(app); // Set the app in the ZennoDroid module spoofing list
lspHelper.EnableModule(); // Enable the ZennoDroid module

instance.DroidInstance.Settings.SetLSPosedSettings("{ \"UseInjectScript\":true }"); // Enable JavaScript injection before page load
instance.DroidInstance.App.InjectScript(app, script); // Set the script to execute before page load

instance.DroidInstance.App.Open(app); // Open the app

The project variable script contains the code to execute.

(() => {
const ID = "hello-world-date-banner";
const existing = document.getElementById(ID);
const text = `Hello world — ${new Date().toLocaleString()}`;

if (existing) {
existing.textContent = text; // already added: just update
return;
}

const el = document.createElement("div");
el.id = ID;
el.textContent = text;
el.style.cssText =
"padding:8px 12px;background:#fffbcc;color:#111;" +
"font:14px/1.4 system-ui;border-bottom:1px solid #e6d98c;";
(document.body || document.documentElement).prepend(el);
})();