You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python结合Appium关闭Android设备上的所有打开应用?

解决方案:获取运行中应用并批量关闭

1. 获取当前运行的应用列表

根据你使用的平台(Android/iOS),可以用以下方式拿到运行中的应用包名列表:

Android 平台

方法一:通过 Appium API 直接获取

利用 Appium 的 execute_script 调用 Android 系统接口,返回所有运行中的进程信息,再提取包名:

# 获取所有运行中进程的详细信息
running_processes = driver.execute_script('mobile: getRunningAppProcesses')
# 提取包名,可按需过滤系统进程(比如排除以com.android开头的核心进程)
running_packages = [proc['processName'] for proc in running_processes if not proc['processName'].startswith('com.android')]

方法二:通过 adb 命令获取

如果你的脚本环境能直接调用 adb,可以执行命令拿到包名列表:

# 输出所有非系统第三方运行应用的包名
adb shell dumpsys activity processes | grep -E "ProcessRecord" | awk '{print $8}' | grep -v "com.android"

在 Python 脚本中可以通过 subprocess 模块执行该命令并读取输出。

iOS 平台

使用 Appium 的 mobile: listApps 方法,指定筛选状态为 running:

# 获取所有运行中的应用信息
running_apps = driver.execute_script('mobile: listApps', {'state': 'running'})
# 提取应用的 bundleId
running_bundle_ids = [app['bundleId'] for app in running_apps]

2. 批量关闭应用

拿到包名/ bundleId 列表后,循环调用 terminate_app 即可。建议跳过你的自动化目标应用,避免误关:

# 替换成你的自动化目标应用包名/bundleId
target_app = "com.your.target.app"

for app_id in running_packages:  # iOS 替换为 running_bundle_ids
    if app_id != target_app:
        try:
            driver.terminate_app(app_id)
            print(f"已关闭应用: {app_id}")
        except Exception as e:
            print(f"关闭应用{app_id}失败: {str(e)}")

额外优化:快速清后台(Android 专属)

如果不需要精确控制关闭哪些应用,Android 可以直接模拟系统清后台操作,效率更高:

# 先按Home键回到桌面
driver.press_keycode(3)
# 模拟按下系统清后台按键(不同品牌机型按键码可能不同,示例为小米机型的187,需自行适配)
driver.press_keycode(187)

或者用 adb 命令强制停止所有第三方应用:

adb shell pm list packages -3 | cut -d':' -f2 | xargs -I {} adb shell am force-stop {}

内容的提问来源于stack exchange,提问作者Gauthier Buttez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 04:35:28