Application

描述

Application类提供在AgentBay云环境中管理应用程序的方法,包括列出已安装的应用程序、启动应用程序以及停止运行中的进程。

方法

说明

环境

ComputerUseLinux

ComputerUseWindows

BrowserUse

MobileUse

CodeSpace

get_installed_apps

获取已安装应用列表(支持过滤开始菜单、桌面快捷方式,可排除系统应用)

不支持

支持

不支持

支持

不支持

list_visible_apps

列出所有有可见窗口的应用程序

不支持

支持

不支持

不支持

不支持

start_app

启动指定应用(支持工作目录设置,Android平台支持Activity指定)

不支持

支持

不支持

支持

不支持

stop_app_by_pname

通过进程名终止应用

不支持

支持

不支持

不支持

不支持

stop_app_by_pid

通过进程ID终止应用

不支持

支持

不支持

不支持

不支持

stop_app_by_cmd

通过命令终止应用进程

不支持

支持

不支持

支持

不支持

属性

属性名(Property)

说明(Description)

Name

应用名称

StartCmd

启动命令

StopCmd

停止命令(可选)

WorkDirectory

工作目录(可选)

PName

进程名称

PID

进程ID

CmdLine

命令行参数(可选)

方法

GetInstalledApps - 获取已安装的应用程序

Golang

func (am *ApplicationManager) GetInstalledApps(includeSystemApps bool, includeStoreApps bool, includeDesktopApps bool) (*InstalledAppsResult, error)

参数:

  • includeSystemApps(bool):是否包含系统应用。

  • includeStoreApps(bool):是否包含商店应用。

  • includeDesktopApps(bool):是否包含桌面应用。

返回值:

  • *InstalledAppsResult:包含已安装应用程序列表和请求ID的结果对象。

  • error:若操作失败,返回错误信息。

InstalledAppsResult 结构体:

type InstalledAppsResult struct {
    RequestID string         // 调试用的唯一请求标识符
    Apps      []*InstalledApp // 已安装的应用程序数组
}

type InstalledApp struct {
    Name        string // 应用名称
    Path        string // 应用路径
    Version     string // 应用版本
    Description string // 应用描述
}

Python

def get_installed_apps(
    self,
    include_system_apps: bool = True,
    include_store_apps: bool = False,
    include_desktop_apps: bool = True
) -> List[InstalledApp]:

参数:

  • include_system_apps(bool,可选):是否包含系统应用。默认为True

  • include_store_apps(bool,可选):是否包含商店应用。默认为False

  • include_desktop_apps(bool,可选):是否包含桌面应用。默认为True

返回值:

  • List[InstalledApp]:已安装的应用程序列表。

异常:

  • ApplicationError:若获取已安装应用程序失败,引发错误。

TypeScript

async getInstalledApps(
    includeSystemApps: boolean = true,
    includeStoreApps: boolean = false,
    includeDesktopApps: boolean = true
): Promise<InstalledApp[]>

参数:

  • includeSystemApps(boolean,可选):是否包含系统应用。默认为true

  • includeStoreApps(boolean,可选):是否包含商店应用。默认为false

  • includeDesktopApps(boolean,可选):是否包含桌面应用。默认为true

返回值:

  • Promise<InstalledApp[]>:返回已安装应用程序列表的Promise。

异常:

  • APIError:若获取已安装应用程序失败,抛出错误。

StartApp - 启动应用程序

Golang

func (am *ApplicationManager) StartApp(startCmd string, workDirectory string) (string, error)

参数:

  • startCmd(string):启动应用程序的命令。

  • workDirectory(string):应用程序的工作目录。

返回值:

  • string:包含启动进程列表的JSON字符串。

  • error:若操作失败,返回错误信息。

Python

def start_app(self, start_cmd: str, work_directory: str = "") -> List[Process]:

参数:

  • start_cmd启动应用程序的命令。

  • work_directory(str,可选):应用程序的工作目录。默认为空字符串。

返回值:

  • List[Process]:启动的进程列表。

异常:

  • ApplicationError:若启动应用程序失败,引发错误。

TypeScript

async startApp(startCmd: string, workDirectory: string = ""): Promise<Process[]>

参数:

  • startCmd(string):启动应用程序的命令。

  • workDirectory(string,可选):应用程序的工作目录。默认为空字符串。

返回值:

  • Promise<Process[]>:返回启动进程列表的Promise。

异常:

  • APIError:若启动应用程序失败,抛出错误。

StopAppByPName - 按进程名停止应用程序

Golang

func (am *ApplicationManager) StopAppByPName(pname string) (string, error)

参数:

  • pname(string):要停止的进程名称。

返回值:

  • string:操作成功时的提示信息。

  • error:若操作失败,返回错误信息。

Python

def stop_app_by_pname(self, pname: str) -> bool:

参数:

  • pname(str):要停止的进程名称。

返回值:

  • bool:操作成功时返回True,否则返回False

异常:

  • ApplicationError:若停止应用程序失败,引发错误。

TypeScript

async stopAppByPName(pname: string): Promise<boolean>

参数:

  • pname(string):要停止的进程名称。

返回值:

  • Promise<boolean>:操作成功时返回true,否则返回false

异常:

  • APIError:若停止应用程序失败,抛出错误。

StopAppByPID - 按进程 ID 停止应用程序

Golang

func (am *ApplicationManager) StopAppByPID(pid int) (string, error)

参数:

  • pid(int):要停止的进程ID。

返回值:

  • string:操作成功时的提示信息。

  • error:若操作失败,返回错误信息。

Python

def stop_app_by_pid(self, pid: int) -> bool:

参数:

  • pid(int):要停止的进程ID。

返回值:

  • bool:操作成功时返回True,否则返回False

异常:

  • ApplicationError:若停止应用程序失败,引发错误。

TypeScript

async stopAppByPid(pid: number): Promise<boolean>

参数:

  • pid(number):要停止的进程ID。

返回值:

  • Promise<boolean>:操作成功时返回true,否则返回false

异常:

  • APIError:若停止应用程序失败,抛出错误。

StopAppByCmd - 按停止命令停止应用程序

Golang

func (am *ApplicationManager) StopAppByCmd(stopCmd string) (string, error)

参数:

  • stopCmd(string):用于停止应用程序的命令。

返回值:

  • string:操作成功时的提示信息。

  • error:若操作失败,返回错误信息。

Python

def stop_app_by_cmd(self, stop_cmd: str) -> bool:

参数:

  • stop_cmd(str):用于停止应用程序的命令。

返回值:

  • bool:操作成功时返回True,否则返回False

异常:

  • ApplicationError:若停止应用程序失败,引发错误。

TypeScript

async stopAppByCmd(stopCmd: string): Promise<boolean>

参数:

  • stopCmd(string):用于停止应用程序的命令。

返回值:

  • Promise<boolean>:操作成功时返回true,否则返回false

异常:

  • APIError:若停止应用程序失败,抛出错误。

ListVisibleApps - 列出可见的应用程序

Golang

func (am *ApplicationManager) ListVisibleApps() (*VisibleAppsResult, error)

返回值:

  • *VisibleAppsResult:包含可见进程列表和请求ID的结果对象。

  • error:若操作失败,返回错误信息。

VisibleAppsResult 结构体:

type VisibleAppsResult struct {
    RequestID string     // 调试用的唯一请求标识符
    Processes []*Process // 可见进程数组
}

type Process struct {
    PName string // 进程名称
    PID   int    // 进程 ID
}

Python

def list_visible_apps(self) -> List[Process]:

返回值:

  • List[Process]:可见的进程列表。

异常:

  • ApplicationError:若列出可见应用程序失败,引发错误。

TypeScript

async listVisibleApps(): Promise<Process[]>

返回值:

  • Promise<Process[]>:返回可见进程列表的Promise。

异常:

  • APIError:若列出可见应用程序失败,抛出错误。

应用程序管理示例

Golang

package main

import (
    "fmt"
    "log"
)

func main() {
    // 创建会话
    agentBay := agentbay.NewAgentBay("your-api-key")
    sessionResult, err := agentBay.Create(nil)
    if err != nil {
        log.Fatal(err)
    }
    session := sessionResult.Session

    // 获取已安装的应用程序
    appsResult, err := session.Application.GetInstalledApps(true, false, true)
    if err != nil {
        log.Printf("Error getting installed apps: %v", err)
    } else {
        for _, app := range appsResult.Apps {
            fmt.Printf("Application: %s\n", app.Name)
        }
    }

    // 启动应用程序
    processesResult, err := session.Application.StartApp("/usr/bin/google-chrome-stable", "")
    if err != nil {
        log.Printf("Error starting app: %v", err)
    } else {
        var processes []Process
        _ = json.Unmarshal([]byte(processesResult), &processes)
        for _, process := range processes {
            fmt.Printf("Started process: %s (PID: %d)\n", process.PName, process.PID)
        }
    }

    // 列出可见的应用程序
    visibleResult, err := session.Application.ListVisibleApps()
    if err != nil {
        log.Printf("Error listing visible apps: %v", err)
    } else {
        for _, app := range visibleResult.Processes {
            fmt.Printf("Visible application: %s (PID: %d)\n", app.PName, app.PID)
        }
    }

    // 按 PID 停止应用程序
    if len(processes) > 0 {
        success, err := session.Application.StopAppByPID(processes[0].PID)
        if err != nil {
            log.Printf("Error stopping app: %v", err)
        } else {
            fmt.Printf("Application stopped: %s\n", success)
        }
    }
}

TypeScript

import { AgentBay } from 'wuying-agentbay-sdk';

// 初始化 SDK
const agentBay = new AgentBay({ apiKey: 'your_api_key' });

// 获取已安装的应用程序
async function getApplications() {
  try {
    const apps = await agentBay.application.getInstalledApps();
    console.log(`Found ${apps.length} applications:`);
    apps.forEach(app => {
      console.log(`Name: ${app.name}, Start Cmd: ${app.start_cmd}`);
    });
  } catch (error) {
    console.error('Error retrieving applications:', error);
  }
}

// 启动应用程序
async function startApplication() {
  try {
    const processes = await agentBay.application.startApp('/usr/bin/google-chrome-stable');
    console.log(`Started ${processes.length} processes:`);
    processes.forEach(p => {
      console.log(`Process Name: ${p.pname}, PID: ${p.pid}`);
    });
  } catch (error) {
    console.error('Error starting application:', error);
  }
}

// 按 PID 停止应用程序
async function stopApplicationByPID() {
  try {
    const success = await agentBay.application.stopAppByPid(12345);
    if (success) {
      console.log('Application stopped successfully.');
    } else {
      console.log('Failed to stop application.');
    }
  } catch (error) {
    console.error('Error stopping application:', error);
  }
}

// 列出可见的应用程序
async function listVisibleApplications() {
  try {
    const visibleApps = await agentBay.application.listVisibleApps();
    console.log(`Visible applications: ${visibleApps.length}`);
    visibleApps.forEach(app => {
      console.log(`Name: ${app.pname}, PID: ${app.pid}`);
    });
  } catch (error) {
    console.error('Error listing visible applications:', error);
  }
}