牙叔教程 简单易懂
上次写了一篇 半自动开启adb无线调试
用的时候发现, 无线调试开关有时候自己就关闭了,
那么此时, 打开无线调试页面后, 页面是空的
无线调试必须在开启状态我们才能获取到IP和端口
获取IP和端口的新流程
- 打开开发者选项
- 滑动页面, 让无线调试按钮出现
- 确保打开无线按钮调试开关, 就是右边的蓝色按钮
- 点击无线调试按钮, 打开无线调试页面
- 获取ip和端口
- 发送消息到钉钉
// 每次adb无线调试都要自己打开开发者模式 查看端口 // 打开无线调试界面 // 把ip和端口发送到钉钉 engines.all().map((ScriptEngine) => { if (engines.myEngine().toString() !== ScriptEngine.toString()) { ScriptEngine.forceStop(); } }); threads.start(function () { let view = text("立即开始").visibleToUser(true).boundsInside(0, 0, device.width, device.height).findOne(); view.click(); }); // 请求截图 if (!requestScreenCapture()) { toast("请求截图失败"); exit(); } /* -------------------------------------------------------------------------- */ let info = getIpPort(); sendInfo(info); function sendInfo(info) { // 打开钉钉群聊 // 点击右上角设置 // 点击智能群助手 // 点击添加机器人 // 点击添加机器人 // 点击自定义 // 点击添加 let token = "78axxxxxxxxxxxxxxxxxxxxxxxxx9b8e7549eb"; let url = "https://oapi.dingtalk.com/robot/send?access_token=" + token; var temp = http.postJson(url, { msgtype: "text", text: { content: "adb connect " + info + " \n\n来自 牙叔教程" } }); log(temp.body.string()); } function slide() { let view = idEndsWith("recycler_view") .visibleToUser(true) .boundsInside(0, 0, device.width, device.height) .findOne(1000); view && view.scrollForward(); sleep(1000); } function appearWirelessDebugging() { for (var i = 0; i < 2; i++) { let view = text("无线调试").visibleToUser(true).boundsInside(0, 0, device.width, device.height).findOne(1000); if (view) { log("无线调试按钮 出现"); return true; } else { slide(); } } return false; } function getWirelessDebuggingSwitchView() { let view = text("无线调试").visibleToUser(true).boundsInside(0, 0, device.width, device.height).findOne(); let parentView = view.parent().parent(); let rect = parentView.bounds(); view = className("android.widget.Switch") .visibleToUser(true) .boundsInside(rect.left, rect.top, rect.right, rect.bottom) .findOne(); return view; } function getWirelessDebuggingSwitchStatus() { let view = getWirelessDebuggingSwitchView(); let rect = view.bounds(); let centerPoint = { x: rect.centerX(), y: rect.centerY(), }; var img = captureScreen(); let currentColor = images.pixel(img, centerPoint.x, centerPoint.y); log(colors.toString(currentColor)); let blue = "#ff0d84ff"; let r = colors.isSimilar(blue, currentColor); return r; } function openWirelessDebuggingSwitch() { threads.start(function () { let view = text("允许").visibleToUser(true).boundsInside(0, 0, device.width, device.height).findOne(3000); if (view) { view.click(); } }); let view = getWirelessDebuggingSwitchView(); view.click(); sleep(1000); } function getIpPort() { // 打开开发者选项 let intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS); app.startActivity(intent); log("等待 开发者选项 出现 start"); text("开发者选项") .visibleToUser(true) .boundsInside(0, 0, device.width, device.height / 2) .waitFor(); log("等待 开发者选项 出现 end"); if (!appearWirelessDebugging()) { return "滑动 2 次后, 没有找到无线调试按钮"; } let status = getWirelessDebuggingSwitchStatus(); log("无线开关状态: " + status); if (!status) { openWirelessDebuggingSwitch(); } // 点击 无线调试 let view = text("无线调试") .className("android.widget.TextView") .visibleToUser(true) .boundsInside(0, 0, device.width, device.height) .findOne(); view.parent().parent().click(); text("设备名称") .visibleToUser(true) .boundsInside(0, 0, device.width, device.height / 2) .waitFor(); // 获取ip和端口 view = textMatches(/192\.168.*/) .className("android.widget.TextView") .visibleToUser(true) .boundsInside(0, 0, device.width, device.height) .findOne(); return view.text(); }
环境
手机: Mi 11 Pro
Android版本: 11
Autojs版本: 9.0.11
电脑: win10
名人名言
思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问
--- 牙叔教程
声明
部分内容来自网络
本教程仅用于学习, 禁止用于其他用途