Skip to main content

DroidInstance API

Description​

Welcome to the first part of the documentation for working with the ZennoDroid API. Here, you'll find key information, the main methods for working with ZennoDroid objects, and C# code examples.

The main object for working with the ZennoDroid API​

IDroidInstanceAPI DroidInstance

This object is basically a container for interfaces that let you interact with different aspects of Android, such as managing apps, sending input, settings, and so on. With it, you can access the interaction object you need and then use its methods and properties for working with the API.

Example.​

instance.DroidInstance.Action.SelectRandom();

List of interfaces.​

IDroidActionAPI Action { get; }
IDroidAppAPI App { get; }
IAppiumDriverAPI AppiumDriver { get; }
IFridaDeviceAPI FridaDevice { get; }
IDroidHierarchyAPI Hierarchy { get; }
IDroidInfoAPI Info { get; }
IDroidInputAPI Input { get; }
IDroidProxyAPI Proxy { get; }
IDroidScreenAPI Screen { get; }
IDroidSettingsAPI Settings { get; }
ISqlite3API Sqlite3 { get; }
IWebViewAPI WebView { get; }

Interface properties and methods.​

IAppiumDriverAPI​

IAppiumDriverAPI AppiumDriver

IAndroidElementAPI ActiveElement();
IAndroidElementAPI FindElementByAccessibilityId(string id);
IAndroidElementAPI FindElementByClassName(string className);
IAndroidElementAPI FindElementById(string id);
IAndroidElementAPI FindElementByUiAutomator(string uiSelector);
IAndroidElementAPI FindElementByXPath(string xpath);
IAndroidElementAPI[] FindElementsByAccessibilityId(string id);
IAndroidElementAPI[] FindElementsByClassName(string className);
IAndroidElementAPI[] FindElementsById(string id);
IAndroidElementAPI[] FindElementsByUiAutomator(string uiSelector);
IAndroidElementAPI[] FindElementsByXPath(string xpath);
string GetRawSource();
string GetScreenshot();
void ScrollToElementByAccessibilityId(string id, int maxSwipes);
void ScrollToElementByClassName(string className, int maxSwipes);
void ScrollToElementByUiAutomator(string uiSelector, int maxSwipes);
void UpdateSettings(string key, object value);
void UpdateSettings(IEnumerable<KeyValuePair<string, object>> keyValuePairs);

IDroidActionAPI​

IDroidActionAPI Action

void SelectByIndex(int index);
void SelectByName(string name);
void SelectByTitle(string title);
void SelectRandom();
void SelectRandom(string mask);
void SelectRandom(IEnumerable<string> source);
void Start();
void Start(bool applyProfile);
void Start(string captureScreenMethod);
void Start(bool applyProfile, string captureScreenMethod);
void Stop();
void WaitForUserAction(int timeout);
void WaitForUserAction(int timeout, string comment);

IDroidActionEmulatorAPI: IDroidActionAPI​

IDroidActionEmulatorAPI Action

int Clone();
int Create(string version);
void DeleteByIndex(int index);
void DeleteByName(string name);
void DeleteByTitle(string title);
void Export(string path);
void FactoryReset(bool resetSystem);
int Import(string path);
void Rename(int index, string title);
void Rename(string name, string title);
void RenameTo(string title);

IDroidAppAPI​

IDroidAppAPI App

string Top { get; }
uint TopPid { get; }
bool AddAccount(string name, string type, string password);
bool AddAccount(string name, string type, string password, string metadata);
string AppDir(string packageName);
void BackupAppData(string packageName, string pathToBackup);
void BackupAppData(string packageName, string pathToBackup, bool savePermissions);
void BackupAppData(string packageName, string pathToBackup, bool savePermissions, string accountType);
void Clean(string packageName);
void CleanCache(string packageName);
void ClearAllNotifications();
void ClearAppNotifications(string packageName);
void Close(string packageName);
void CloseAll();
string DataDir(string packageName);
void Delete(string packageName);
string DeleteCookie(string packageName, string host = null, string name = null, bool persistentOnly = false, bool secureOnly = false, bool httpOnly = false);
string GetAccounts(string packageName);
string GetAccounts(string packageName, string type);
string GetAllNotifications();
string GetApplicationsInfo();
string GetAppNotifications(string packageName);
string GetCookie(string packageName);
string GetCookie(string packageName, string host, string name = null, bool persistentOnly = false, bool secureOnly = false, bool httpOnly = false);
string GetCookiePath(string packageName);
string GetLaunchableApplicationsInfo();
string[] GetListPackages();
string[] GetListSystemPackages();
string[] GetListUserPackages();
string ImportCookie(string packageName, string cookies, bool replaceAll = false);
void InjectScript(string packageName, string script);
void InstallApk(string path);
void InstallApk(string path, bool useCache, bool useRoot);
bool IsInstalled(string packageName);
void Open(string packageName);
void Open(string packageName, string activityName);
void Open(string packageName, string activityName, string action);
void OpenAsRoot(string packageName, string activityName);
void OpenAsRoot(string packageName, string activityName, string action);
void OpenUrl(string url);
void OpenUrl(string url, string packageName);
void PatchFlutterLib(string packageName, string proxy);
bool RemoveAccount(string name, string type);
void RestoreAppData(string packageName, string pathToBackup);
void RestoreAppData(string packageName, string pathToBackup, bool restorePermissions);
void RestoreAppData(string packageName, string pathToBackup, bool restorePermissions, bool restoreAccount);
void RestoreDetachedAppData(string packageName, string pathToBackup, bool restorePermissions, bool restoreAccount);
void RestoreFlutterLib(string packageName);
void ResetFakeCameraFraming(string packageName);
void SetFakeCameraFraming(string packageName, double anchorX, double anchorY, double zoom, int rotate, bool fit);
void SetVideoForFakeCamera(string packageName, string videoSource);
void SetVideoForFakeCamera(string packageName, string videoSource, bool loop, bool mute, bool photo);
void SetVideoForFakeCamera(string packageName, string videoSource, bool loop, bool mute, bool photo, bool synth);
string Uid(string packageName);

IDroidHierarchyAPI​

IDroidHierarchyAPI Hierarchy

string GetLayout();

IDroidInfoAPI​

IDroidInfoAPI Info

string AddressPort { get; }
int Index { get; }
bool IsRunning { get; }
string Name { get; }
string Title { get; }
int UiPort { get; }

IDroidInputAPI​

IDroidInputAPI Input

void ClearText();
void FingerDown(int x, int y);
void FingerDown(int x, int y, int fingerId);
void FingerMove(int x, int y);
void FingerMove(int x, int y, int fingerId);
void FingerUp(int x, int y);
void FingerUp(int x, int y, int fingerId);
void FreeMove(string json, double speed);
string GetClipboard();
void LongTap(int x, int y);
void LongTapAndSwipe(int x1, int y1, int x2, int y2);
void LongTapAndSwipe(int x1, int y1, int x2, int y2, int duration);
void LongTapAndSwipeCurved(int x1, int y1, int x2, int y2);
void LongTapAndSwipeCurved(int x1, int y1, int x2, int y2, int duration);
void LongTapAndSwipeCurved(int x1, int y1, double bending, int x2, int y2);
void LongTapAndSwipeCurved(int x1, int y1, int xPivot, int yPivot, int x2, int y2);
void LongTapAndSwipeCurved(int x1, int y1, double bending, int x2, int y2, int duration);
void LongTapAndSwipeCurved(int x1, int y1, int xPivot, int yPivot, int x2, int y2, int duration);
string RootShell(string command);
string RootShell(string command, int timeout);
string RootShell(string command, int timeout, bool checkconnect);
void SendKeyCode(int keyCode);
void SendKeyCode(KeyCode keyCode);
void SendSmsMessage(string phone, string message);
void SendText(string text);
void SendText(string text, int latency);
void SetClipboard(string text);
void SetNativeEventMode(bool useNativeEvent);
string Shell(string command);
string Shell(string command, int timeout);
string Shell(string command, int timeout, bool checkconnect);
void Swipe(int x1, int y1, int x2, int y2);
void Swipe(int x1, int y1, int x2, int y2, int duration);
void SwipeCurved(int x1, int y1, int x2, int y2);
void SwipeCurved(int x1, int y1, int x2, int y2, int duration);
void SwipeCurved(int x1, int y1, double bending, int x2, int y2);
void SwipeCurved(int x1, int y1, int xPivot, int yPivot, int x2, int y2);
void SwipeCurved(int x1, int y1, double bending, int x2, int y2, int duration);
void SwipeCurved(int x1, int y1, int xPivot, int yPivot, int x2, int y2, int duration);
void Tap(int x, int y);
void Tap(int x, int y, int duration);
void Touch(int xMin, int yMin, int xMax, int yMax, bool longPress, string clickDistributionType);
void ZoomIn();
void ZoomIn(int centerX, int centerY, double ratio);
void ZoomOut();
void ZoomOut(int centerX, int centerY, double ratio);

IDroidProxyAPI​

IDroidProxyAPI Proxy

void ClearProxy();
void DisablePrivateDns();
void EnablePrivateDns(string address);
string GetProxy();
void SetProxy(string proxy);
void SetProxy(string proxy, IDroidProxySettings settings);

IDroidScreenAPI​

IDroidScreenAPI Screen

Rectangle FindImage(string imageHash, Rectangle[] rectangles, int confidenceInterval);
Rectangle FindImage(string[] imageHashes, Rectangle[] rectangles, int confidenceInterval);
Rectangle FindImage(string imageHash, Rectangle[] rectangles, int confidenceInterval, int searchTime);
Rectangle FindImage(string[] imageHashes, Rectangle[] rectangles, int confidenceInterval, int searchTime);
Rectangle FindImageBlackWhite(string imageHash, Rectangle[] rectangles, int confidenceInterval, int threshold);
Rectangle FindImageBlackWhite(string[] imageHashes, Rectangle[] rectangles, int confidenceInterval, int threshold);
Rectangle FindImageBlackWhite(string imageHash, Rectangle[] rectangles, int confidenceInterval, int threshold, int searchTime);
Rectangle FindImageBlackWhite(string[] imageHashes, Rectangle[] rectangles, int confidenceInterval, int threshold, int searchTime);
Rectangle FindImageGrayscale(string imageHash, Rectangle[] rectangles, int confidenceInterval);
Rectangle FindImageGrayscale(string[] imageHashes, Rectangle[] rectangles, int confidenceInterval);
Rectangle FindImageGrayscale(string imageHash, Rectangle[] rectangles, int confidenceInterval, int searchTime);
Rectangle FindImageGrayscale(string[] imageHashes, Rectangle[] rectangles, int confidenceInterval, int searchTime);
Point FindPixel(Color color, Rectangle[] rectangles, int variation);
Point FindPixel(string htmlColor, Rectangle[] rectangles, int variation);
Point FindPixel(Color color, Rectangle[] rectangles, int variation, int searchTime);
Point FindPixel(string htmlColor, Rectangle[] rectangles, int variation, int searchTime);
Point FindPixels(Color[] colors, Rectangle[] rectangles, int variation);
Point FindPixels(string[] htmlColors, Rectangle[] rectangles, int variation);
Point FindPixels(Color[] colors, Rectangle[] rectangles, int variation, int searchTime);
Point FindPixels(string[] htmlColors, Rectangle[] rectangles, int variation, int searchTime);
Size GetScreenSize();
void RefreshScreen();
void ResetScreen();
byte[] ScreenshotAsArray();
byte[] ScreenshotAsArray(Rectangle area);
string ScreenshotAsBase64String();
string ScreenshotAsBase64String(Rectangle area);
void SetCaptureScreenQuality(int quality);

IDroidSettingsAPI​

IDroidSettingsAPI Settings

void ClearLSPosedSettings();
string GenerateRandomLSPosedSettings(IDeviceFilter filter, IDeviceOptions options);
void SetBaseband(string version);
void SetGeo(double longitude, double latitude);
void SetGeo(double longitude, double latitude, double altitude);
void SetGeo(double longitude, double latitude, double altitude, double bearing);
void SetGeo(double longitude, double latitude, double altitude, double bearing, double speed);
void SetLanguage(string language);
void SetLSPosedSettings(string json);
void SetRandomLSPosedSettings(IDeviceFilter filter, IDeviceOptions deviceOptions);
void SetTime(string dateTime);
void SetTime(DateTime dateTime);
void SetTimezone(string timezone);

IFridaDeviceAPI​

IFridaDeviceAPI FridaDevice

string Id { get; }
string Name { get; }
IFridaSessionAPI Attach(uint pid);
void DetachAllSessions();
void DetachSessionByScriptName(string scriptName);
void InstallAndRunServer();
void KillServer();
void LoadScriptToApp(string packageName, string source);
void LoadScriptToFrontmost(string source);
void Resume(uint pid);
uint Spawn(string packageName);

ISqlite3API​

ISqlite3API Sqlite3

string ExecuteQuery(string database, string query);
string ExecuteQuery(string database, string query, string options);
void Install();

IWebViewAPI​

IWebViewAPI WebView

void DisableForcedRenderWebView();
void EnableForcedRenderWebView();
string EvaluateScript(string script);
string GetAttachedWebSocketUrl();
void InjectSystemCertificate(string source);