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:
trueif installed; otherwisefalse.
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 theGetAccounts(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:
trueif the account was added successfully; otherwisefalse. -
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:
trueif the account was added successfully; otherwisefalse.
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:
trueif successfully removed.
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);
})();