Application control module for Android devices in the Total Control scripting system.
This module enables automation and control of Android apps running on connected devices. It provides
functionality to launch, close, install, uninstall, and query apps, as well as manipulate or retrieve
activities on the device. It supports both Java-layer and JS-layer extensions to the Device object,
allowing methods to be invoked via device.runApp() or directly through exports.
Features
- Launch and restart applications by package name
- Close apps or check if an app is running in the foreground
- Retrieve the currently focused app or activity
- Install or uninstall APK files from a specified path
- Get a list of all installed packages on the device
- Dynamically open activities by component name with or without root
Usage Example
var app = require("sigma/app");
var { Device } = require('sigma/device');
var sigmaDevice = Device.getMain();
// Run an application
var result = sigmaDevice.runApp("com.tencent.qqmusic");
if (result === 0) {
print("App launched successfully");
}
// Get currently focused activity
var { getActivity } = require("sigma/app");
var activity = getActivity();
print("Current activity: " + activity);
Integration
- Methods are automatically bound to
Device.prototypeandDeviceArray.prototype
Methods
(static) closeApp(packageName) → {number}
Close specified software on the device.
Example
var app = require("sigma/app");
var runAppName = "com.tencent.qqmusic";
var { Device } = require('sigma/device');
var sigmaDevice = Device.getMain();
var closeapp = sigmaDevice.closeApp(runAppName);
if (closeapp === 0) {
print("Succeed to close QQmusic");
} else {
print("Failed to close QQmusic");
}
// Operation Result:
// If it executes successfully, it will return:
Succeed to close QQmusic
Parameters:
| Name | Type | Description |
|---|---|---|
packageName |
string | The package name of the app to close, e.g. "com.tencent.qqmusic". |
Returns:
- 0: Successfully closed the specified app.
- -1: Closing the specified app failed, specific error information can be obtained by the lastError() function.
- Type
- number
(static) getActivity() → {string|null}
Gets the currently running activity.
It prioritizes matching the most relevant activity keys:
- topResumedActivity
- ResumedActivity
- TopResumedActivity
Example
var app = require("sigma/app");
var { Device } = require('sigma/device');
// Example: Get activity from main device
var sigmaDevice = Device.getMain();
if (!sigmaDevice) {
print("No device found");
} else {
const ret = sigmaDevice.getActivity();
print("The activity running in the foreground is: " + ret);
}
// Operation Result:
// If it executes successfully, it will return:
The activity running in the foreground is: com.tencent.qqmusic/com.tencent.qqmusic.activity.LoginActivity
Returns:
This function returns the value of the activity if it succeeds, and returns null if it fails. If failed, specific error information can be obtained by the lastError() function.
- Type
- string | null
(static) getForegroundApp() → {string|null}
Get the name of the APP currently running on the device.
Example
var app = require("sigma/app");
var { Device } = require('sigma/device');
var sigmaDevice = Device.getMain();
if (sigmaDevice != null) {
const ret = sigmaDevice.getForegroundApp();
print("The app running in the foreground of the phone is: " + ret);
} else {
print("No device found");
}
// Operation Result:
// If it executes successfully, it will return:
The app running in the foreground of the phone is: com.tencent.qqmusic
Returns:
This function returns the App package name if it succeeds, and returns null if it fails. If failed, specific error information can be obtained by the lastError() function.
- Type
- string | null
(static) getInstalledAPKList() → {object}
Get the name of the APP currently running on the device.
Example
var app = require("sigma/app");
var { Device } = require('sigma/device');
var sigmaDevice = Device.getMain();
print("All APKs currently installed on this phone are:");
var ret = sigmaDevice.getInstalledAPKList();
for (let i = 0; i < ret.length; i++) {
print(ret[i]);
}
// Operation Result:
// If it executes successfully, it will return:
Congratulations, this API executes successfully.
Return value:
com.huawei.android.wfdft
com.android.wallpaper.livepicker
com.android.apps.tag
com.huawei.powergenie
com.android.settings
...
com.huawei.android.airsharing
com.alipay.mobile.scanx
Returns:
This function returns the name of all software installed on the phone if it succeeds, and returns null if it fails. If failed, specific error information can be obtained by the lastError() function.
- Type
- object
(static) installAPK(apkPath) → {number}
Installs an APK file on the connected device from the specified file path.
Example
var app = require("sigma/app");
var { Device } = require('sigma/device');
var sigmaDevice = Device.getMain();
var ret = sigmaDevice.installAPK("D:/Download/QQyinyue_850.apk");
if (ret !== 0) {
print(lastError());
} else {
print("Successfully installed APK");
}
// Operation Result:
// If it executes successfully, it will return:
Successfully installed APK
Parameters:
| Name | Type | Description |
|---|---|---|
apkPath |
string | The full file path to the APK file (e.g., "D:/Download/QQyinyue_850.apk"). |
Returns:
- 0: Successful installation.
- -1: Software installation failed, specific error information can be obtained by the lastError() function.
- Type
- number
(static) isAppForeground(packageName) → {number}
Determine whether the specified application is running in the foreground.
Example
var app = require("sigma/app");
var { Device } = require('sigma/device');
var sigmaDevice = Device.getMain();
var ret = sigmaDevice.isAppForeground("com.tencent.qqmusic");
if (ret !== 0) {
print(lastError());
} else {
print("The specified software is running in the foreground");
}
// Operation Result:
// If it executes successfully, it will return:
The specified software is running in the foreground
Parameters:
| Name | Type | Description |
|---|---|---|
packageName |
string | The package name of the application to check, e.g. "com.tencent.qqmusic". |
Returns:
Returns 0 if running in the foreground, otherwise returns non-zero. At this point, the lastError() function can be used to get the specific error message.
- Type
- number
(static) openActivity(activity, administrator) → {boolean}
Open the specified activity.
Example
var { Device } = require('sigma/device');
var app = require("sigma/app");
var sigmaDevice = Device.getMain();
var ret = sigmaDevice.openActivity("com.tencent.qqmusic/com.tencent.qqmusic.activity.AppStarterActivity", false);
if (ret === true) {
print("Successfully opened the specified activity");
} else {
print("Failed to open the specified activity");
}
// Operation Result:
// If it executes successfully, it will return:
Successfully opened the specified activity
Parameters:
| Name | Type | Description |
|---|---|---|
activity |
string | The full activity name in the format "package/class", e.g. "com.tencent.qqmusic/com.tencent.qqmusic.activity.AppStarterActivity". |
administrator |
boolean | Whether to get super permissions. |
Returns:
This function returns true if it succeeds, and returns false if it fails. If failed, specific error information can be obtained by the lastError() function.
- Type
- boolean
(static) restartApp(packageName) → {boolean}
Restarts the specified application on the device by its package name.
It will first attempt to force stop the app and then relaunch it.
Example
var app = require("sigma/app");
var { Device } = require('sigma/device');
var runAppName = "com.tencent.qqmusic";
var sigmaDevice = Device.getMain();
var ret = sigmaDevice.restartApp(runAppName);
if (ret === 0) {
print("Succeed to restart qqmusic");
} else {
print(lastError());
}
// Operation Result:
// If it executes successfully, it will return:
Succeed to restart qqmusic
Parameters:
| Name | Type | Description |
|---|---|---|
packageName |
string | The package name of the app to restart (e.g., "com.tencent.qqmusic"). |
Returns:
- true: Successfully restarted the specified app.
- false: Restarting the specified app failed, specific error information can be obtained by the lastError() function.
- Type
- boolean
(static) runApp(packageName) → {number}
Launches the specified application on the device by its package name.
Example
var app = require("sigma/app");
var { Device } = require('sigma/device');
var runAppName = "com.tencent.qqmusic";
var sigmaDevice = Device.getMain();
var runapp = sigmaDevice.runApp(runAppName);
if (runapp === 0) {
print("Succeed to run qqmusic");
} else {
print(lastError());
}
// Operation Result:
// If it executes successfully, it will return:
Succeed to run qqmusic
Parameters:
| Name | Type | Description |
|---|---|---|
packageName |
string | The package name of the app to run (e.g., "com.tencent.qqmusic"). |
Returns:
Returns 0 if the app was successfully launched, or a non-zero value if the launch failed.
- Type
- number
(static) uninstallAPK(packageName) → {number}
Uninstalls the specified application from the device using its package name.
Example
var app = require("sigma/app");
var { Device } = require('sigma/device');
var sigmaDevice = Device.getMain();
var ret = sigmaDevice.uninstallAPK("com.tencent.qqmusic");
if (ret === 0) {
print("Successfully uninstall APK");
} else {
print(lastError());
}
// Operation Result:
// If it executes successfully, it will return:
Successfully uninstall APK
Parameters:
| Name | Type | Description |
|---|---|---|
packageName |
string | The package name of the app to uninstall (e.g., "com.tencent.qqmusic"). |
Returns:
- 0: Successfully run the specified app.
- -1: Running the specified app failed, specific error information can be obtained by the lastError() function.
- Type
- number