如何编写JAVA脚本在Android 6.0.1设备上批量关闭蜂窝网络指定功能
Android 6.0.1 MDM JavaScript操作脚本实现
核心逻辑对齐
你之前通过ADB实现的操作逻辑为:启动移动网络设置页→向下导航到目标功能→按确认键切换开关状态,以下脚本完全对齐该逻辑,适配原生Android 6.0.1系统的MDM推送场景。
通用JS脚本示例(适配支持shell调用的MDM)
绝大多数MDM的设备管理员权限支持直接执行系统shell命令,该写法兼容性最高:
// 启动移动网络设置页面 mdm.executeShellCommand("am start -n com.android.phone/.MobileNetworkSettings"); // 等待页面加载完成,可根据设备性能调整延时时长 setTimeout(() => { // 向下导航到目标选项,需按多少次就复制多少次该行代码,每次间隔300ms mdm.executeShellCommand("input keyevent 20"); setTimeout(() => { // 按下确认键切换开关状态 mdm.executeShellCommand("input keyevent 23"); // 可选:操作完成后返回桌面 setTimeout(() => { mdm.executeShellCommand("input keyevent 4"); }, 500); }, 300); }, 1500);
无shell权限场景的UI自动化写法
如果你的MDM仅开放了UI自动化的JS接口,可使用以下适配UiAutomator的写法:
const ui = mdm.getUiAutomator(); // 启动移动网络设置页 ui.launchActivity("com.android.phone", ".MobileNetworkSettings"); // 等待页面加载 ui.waitForIdle(2000); // 向下导航 ui.pressKeyCode(20); // 等待选中高亮 ui.waitForIdle(300); // 确认切换开关 ui.pressKeyCode(23);
调整说明
- 如果目标功能在设置列表的第N位,重复执行N次
keyevent 20的调用即可,每次调用间隔加300ms延时避免按键漏识别 - 第三方定制ROM如果移动网络设置页面路径不同,可通过
dumpsys window windows | grep mCurrentFocus命令获取对应包名和类名替换脚本中的参数 - 如需确保仅关闭不触发开启,可增加控件属性校验逻辑:读取开关的选中状态,仅为开启状态时再执行确认操作
内容的提问来源于stack exchange,提问作者Omar Abdelrazek
相关产品推荐
相关产品推荐

