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

Android应用启动时如何传递参数?monkeyrunner启动Activity传参方法

最优实现方案

核心思路是通过启动Activity的Intent携带Extra参数传递坐标,不需要额外持久化、广播等中转逻辑,链路最短开销最低,是原生支持的标准传参方式。

1. 安卓应用端适配

在目标Activity的onCreate生命周期中读取Intent传入的坐标参数,直接设置按钮位置即可,示例代码如下:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button targetBtn = findViewById(R.id.target_button);

    // 读取Intent携带的坐标参数,第二个参数为读取失败时的默认值
    int btnX = getIntent().getIntExtra("BUTTON_POS_X", 0);
    int btnY = getIntent().getIntExtra("BUTTON_POS_Y", 0);

    // 直接设置按钮的绝对坐标
    targetBtn.setX(btnX);
    targetBtn.setY(btnY);
}

如果需要用相对布局或者其他布局规则调整位置,也可以读取参数后修改按钮的LayoutParams实现。

2. MonkeyRunner端启动脚本

monkeyrunner的startActivity原生支持传入extras参数传递键值对,直接把坐标作为Extra参数传入即可,示例脚本如下:

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice

# 连接测试设备
device = MonkeyRunner.waitForConnection()

# 定义要传递的按钮坐标数值
pos_extras = {
    'BUTTON_POS_X': 240,
    'BUTTON_POS_Y': 600
}

# 启动目标Activity并携带参数
device.startActivity(
    component='com.your.test.app/.MainActivity', # 替换为你自己的应用组件名
    extras=pos_extras
)

注意事项

  • 两端定义的参数键名(示例中的BUTTON_POS_X、BUTTON_POS_Y)必须完全一致,避免读取失败走默认值
  • 如果需要传递浮点型坐标,安卓端对应使用getFloatExtra方法接收,monkeyrunner端直接传入float类型数值即可
  • 如需适配不同分辨率设备,可以先在monkeyrunner端调用device.getDisplayProperty()获取屏幕宽高,计算得到相对坐标后再传入,兼容性更好

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 20:57:01