Перейти к основному содержимому

App API

Описание

IDroidAppAPI предназначен для управления приложениями на Android-устройстве в ZennoDroid. Предоставляет методы для работы с данными приложений, аккаунтами, уведомлениями, cookies и состоянием приложений.

Большинство методов принимают параметр packageName — имя пакета приложения. Для поиска нужного имени используйте инструмент Установленные приложения.

Повторяет логику работы кубика Действия с приложением для версий Lite/Pro и Enterprise.

Свойства

Top

  • string Top { get; }
    Текущее активное приложение.

    Возвращает:
    Имя пакета приложения на переднем плане.

TopPid

  • uint TopPid { get; }
    PID текущего приложения.

    Возвращает:
    Идентификатор процесса.

Пример.

var app = instance.DroidInstance.App;

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

Методы

Open

  • void Open(string packageName)
    Запускает приложение.

    Параметры:

    • packageName — имя пакета.
  • void Open(string packageName, string activityName)
    Запускает приложение с указанием Activity.

    Параметры:

    • packageName — пакет;
    • activityName — Activity.
  • void Open(string packageName, string activityName, string action)
    Запускает приложение с указанием Activity и Intent Action.

    Параметры:

    • packageName — имя пакета;
    • activityName — имя Activity;
    • action — действие Intent (например: android.intent.action.VIEW).

OpenAsRoot

  • void OpenAsRoot(string packageName, string activityName)
    Запускает приложение с правами root с указанием Activity.

    Параметры:

    • packageName — имя пакета;
    • activityName — имя Activity.
  • void OpenAsRoot(string packageName, string activityName, string action)
    Запускает приложение с правами root с указанием Activity и Intent Action.

    Параметры:

    • packageName — имя пакета;
    • activityName — имя Activity;
    • action — действие Intent (например: android.intent.action.VIEW).

Пример.

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

var packageName = "com.google.chrome"; // Имя приложения
app.Open(packageName); // Открыть приложение

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

var packageName = "com.google.chrome"; // Имя приложения
var activity = ".MainActivity"; // Активити хрома.(Не рабочий пример!)
app.Open(packageName, activity); // Открыть приложение

OpenUrl

  • void OpenUrl(string url)
    Открывает URL.

    Параметры:

    • url — ссылка.
  • void OpenUrl(string url, string packageName)
    Открывает URL через конкретное приложение.

    Параметры:

    • url — ссылка;
    • packageName — приложение.

Пример.

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
var url = "http://ya.ru";
app.OpenUrl(url, packageName); // Открыть Chrome и зайти на сайт ya.ru

Close

  • void Close(string packageName)
    Закрывает приложение.

    Параметры:

    • packageName — имя пакета.

Пример.

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
app.Close(packageName); // Закрыть приложение

CloseAll

  • void CloseAll()
    Закрывает все приложения.

Пример.

var app = instance.DroidInstance.App;

app.CloseAll(); // Закрыть все приложения

Clean

  • void Clean(string packageName)
    Полностью очищает данные приложения (возвращает в состояние после установки).

    Параметры:

    • packageName — имя пакета.

Пример.

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
app.Clean(packageName); // Очистить данные приложения

CleanCache

  • void CleanCache(string packageName)
    Очищает только кэш приложения.

    Параметры:

    • packageName — имя пакета.

Пример.

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
app.CleanCache(packageName); // Очистить кэш приложения

InstallApk

  • void InstallApk(string path)
    Устанавливает APK-файл.

    Параметры:

    • path — путь к APK.
  • void InstallApk(string path, bool useCache, bool useRoot)
    Устанавливает APK с дополнительными параметрами.

    Параметры:

    • path — путь к APK;
    • useCache — использовать кэш при установке;
    • useRoot — использовать root-доступ.

Пример.

var app = instance.DroidInstance.App;

var pathApk = @"\chrome.apk"; // Путь приложения
app.InstallApk(pathApk); // Установить приложение

IsInstalled

  • bool IsInstalled(string packageName)
    Проверяет, установлено ли приложение.

    Параметры:

    • packageName — имя пакета.

    Возвращает:
    true, если установлено; иначе false.

Пример.

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
var isApk = app.IsInstalled(packageName); // Проверка установлено ли приложение

if (!isApk) // Если нет, то установим
{
var pathApk = @"\chrome.apk"; // Путь приложения
app.InstallApk(pathApk); // Установить приложение
}

Delete

  • void Delete(string packageName)
    Удаляет приложение с устройства.

    Параметры:

    • packageName — имя пакета.

Пример.

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
app.Delete(packageName); // Удалить приложение

Uid

  • string Uid(string packageName)
    Получает UID приложения.

    Параметры:

    • packageName — имя пакета.

    Возвращает:
    UID приложения.

Пример.

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
var uid = app.Uid(packageName); // Получить uid приложения

DataDir

  • string DataDir(string packageName)
    Возвращает директорию данных приложения.

    Параметры:

    • packageName — имя пакета.

    Возвращает:
    Путь к каталогу данных (обычно /data/data/...).

Пример.

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
var directory = app.DataDir(packageName); // Получить директорию хранения данных приложения.

AppDir

  • string AppDir(string packageName)
    Возвращает путь к директории приложения на устройстве.

    Параметры:

    • packageName — имя пакета приложения (например: com.android.chrome).

GetListPackages

  • string[] GetListPackages()
    Возвращает список всех пакетов на устройстве.

    Возвращает:
    Массив имён пакетов.

Пример.

var app = instance.DroidInstance.App;

var packages = app.GetListPackages(); // Получить массив всех установленных приложений

GetListSystemPackages

  • string[] GetListSystemPackages()
    Возвращает список системных приложений.

    Возвращает:
    Массив пакетов.

Пример.

var app = instance.DroidInstance.App;

var packages = app.GetListSystemPackages(); // Получить массив всех системных приложений

GetListUserPackages

  • string[] GetListUserPackages()
    Возвращает список пользовательских приложений.

    Возвращает:
    Массив пакетов.

Пример.

var app = instance.DroidInstance.App;

var packages = app.GetListUserPackages(); // Получить массив всех пользовательских приложений

GetAllNotifications

  • string GetAllNotifications()
    Получает все уведомления устройства в формате JSON.

    Возвращает:
    Строку с информацией об уведомлениях.

Пример.

var app = instance.DroidInstance.App;

var json = app.GetAllNotifications(); // Получить все уведомления
project.Json.FromString(json); // Обработать Json

GetAppNotifications

  • string GetAppNotifications(string packageName)
    Получает уведомления конкретного приложения в формате JSON.

    Параметры:

    • packageName — имя пакета.

    Возвращает:
    Строку с уведомлениями.

Пример.

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
var json = app.GetAppNotifications(packageName); // Получить все уведомления
project.Json.FromString(json); // Обработать Json

ClearAllNotifications

  • void ClearAllNotifications()
    Очищает все уведомления устройства.

Пример.

var app = instance.DroidInstance.App;

app.ClearAllNotifications(); // Очистить все уведомления

ClearAppNotifications

  • void ClearAppNotifications(string packageName)
    Очищает уведомления конкретного приложения.

    Параметры:

    • packageName — имя пакета.

Пример.

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
app.ClearAppNotifications(packageName); // Очистить уведомления приложения

BackupAppData

  • void BackupAppData(string packageName, string pathToBackup)
    Создаёт резервную копию данных приложения.

    Параметры:

    • packageName — имя пакета приложения;
    • pathToBackup — путь для сохранения бэкапа.
  • void BackupAppData(string packageName, string pathToBackup, bool savePermissions)
    Создаёт резервную копию с возможностью сохранения разрешений приложения.

    Параметры:

    • savePermissions — сохранять ли текущие разрешения приложения.
  • void BackupAppData(string packageName, string pathToBackup, bool savePermissions, string accountType)
    Расширенное резервное копирование с учётом типа аккаунта.

    Параметры:

    • savePermissions — сохранять разрешения;
    • accountType — тип аккаунта (например: com.yandex.passport, com.twitter.android.auth.login). Тип аккаунта можно узнать с помощью метода GetAccounts(string packageName).

Пример.

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
var pathSave = @"/dir/bakups/name_bakup"; // Путь куда сохранить бэкап
app.BackupAppData(packageName, pathSave); // Сделать бэкап

RestoreAppData

  • void RestoreAppData(string packageName, string pathToBackup)
    Восстанавливает данные приложения из резервной копии.

    Параметры:

    • packageName — имя пакета приложения;
    • pathToBackup — путь к резервной копии.
  • void RestoreAppData(string packageName, string pathToBackup, bool restorePermissions)
    Восстанавливает данные с возможностью восстановления разрешений.

    Параметры:

    • restorePermissions — восстанавливать ли разрешения приложения.
  • void RestoreAppData(string packageName, string pathToBackup, bool restorePermissions, bool restoreAccount)
    Расширенное восстановление с возможностью восстановления аккаунта.

    Параметры:

    • restorePermissions — восстанавливать разрешения;
    • restoreAccount — восстанавливать связанные аккаунты.

RestoreDetachedAppData

  • void RestoreDetachedAppData(string packageName, string pathToBackup, bool restorePermissions, bool restoreAccount)
    Восстанавливает данные приложения без привязки к устройству, на котором был сделан бэкап. Необходимо использовать модуль ZennoBackup.

    Параметры:

    • restorePermissions — восстанавливать разрешения;
    • restoreAccount — восстанавливать связанные аккаунты.

Пример.

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
var pathLoad = @"/dir/bakups/name_bakup"; // Путь хранения бэкапа
app.RestoreAppData(packageName, pathLoad); // Загрузить бэкап

GetCookie

  • string GetCookie(string packageName)
    Получает cookies приложения.

    Параметры:

    • packageName — имя пакета.

    Возвращает:
    Строку с cookies.

Пример.

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
var cookies = app.GetCookie(packageName); // Получить куки приложения

GetCookiePath

  • string GetCookiePath(string packageName)
    Возвращает путь к cookies приложения.

    Параметры:

    • packageName — имя пакета.

    Возвращает:
    Путь к файлу cookies.

Пример.

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
var pathCookie = app.GetCookiePath(packageName); // Получить путь хранения куки

AddAccount

  • bool AddAccount(string name, string type, string password)
    Добавляет аккаунт на устройство.

    Параметры:

    • name — имя аккаунта (например, email или логин);
    • type — тип аккаунта (например: com.google, com.facebook.auth.login);
    • password — пароль аккаунта.

    Возвращает:
    true, если аккаунт успешно добавлен; иначе false.

  • bool AddAccount(string name, string type, string password, string metadata)
    Добавляет аккаунт с дополнительными метаданными.

    Параметры:

    • name — имя аккаунта;
    • type — тип аккаунта;
    • password — пароль;
    • metadata — дополнительные данные аккаунта (например, токены, параметры авторизации в JSON или строковом виде).

    Возвращает:
    true, если аккаунт успешно добавлен; иначе false.


GetAccounts

  • string GetAccounts(string packageName)
    Получает список аккаунтов приложения в формате JSON.

    Параметры:

    • packageName — имя пакета.

    Возвращает:
    Строку с данными аккаунтов.

  • string GetAccounts(string packageName, string type)
    Получает аккаунты определённого типа.

    Параметры:

    • packageName — имя пакета;
    • type — тип аккаунта (например: com.google).

    Возвращает:
    Строку с аккаунтами.

Пример.

var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
var json = app.GetAccounts(packageName); // Получить аккаунты приложения

RemoveAccount

  • bool RemoveAccount(string name, string type)
    Удаляет аккаунт.

    Параметры:

    • name — имя аккаунта;
    • type — тип аккаунта.

    Возвращает:
    true, если успешно удалён.

Часто аккаунт хранится не в самом приложении, а в менеджере аккаунтов.

Например, у приложений Яндекс Go, Яндекс Почта и Яндекс Музыка общая система авторизации. Поэтому при удалении одного из приложений у двух других всё равно останется доступ к аккаунту.

В таких случаях нужно достать аккаунты из приложения и принудительно их удалить.


PatchFlutterLib

  • void PatchFlutterLib(string packageName, string proxy)
    Выполняет патч библиотеки Flutter (libflutter.so) для указанного приложения с целью перенаправления сетевого трафика в BurpSuite для дальнейшего анализа.

    Параметры:

    • packageName — имя пакета приложения;
    • proxy — адрес прокси (например: 10.0.2.2:8083).

RestoreFlutterLib

  • void RestoreFlutterLib(string packageName)
    Восстанавливает оригинальную библиотеку Flutter (libflutter.so), отменяя ранее применённый патч.

    Параметры:

    • packageName — имя пакета приложения.

InjectScript

  • void InjectScript(string packageName, string script)
    Внедряет JavaScript-скрипт в приложение, который выполняется перед загрузкой страницы.

    Параметры:

    • packageName — имя пакета;
    • script — код скрипта.

Пример.

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

instance.DroidInstance.App.Close(app); // Закрыть приложение

var lspHelper = new LSPosedHelper(instance.DroidInstance);
lspHelper.SetPackages(app); // Задать приложение в списке подмены модуля ZennoDroid
lspHelper.EnableModule(); // Включить модуль ZennoDroid

instance.DroidInstance.Settings.SetLSPosedSettings("{ \"UseInjectScript\":true }"); // Включить возможность выполнять javascript перед загрузкой страницы
instance.DroidInstance.App.InjectScript(app, script); // Задать скрипт, который будет выполняться перед загрузкой

instance.DroidInstance.App.Open(app); // Отрыть приложение

Переменная проекта script содержит код, который нужно выполнить.

(() => {
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);
})();