ADB识别手机系统弹授权框包含某段文字-并自动点击确定按钮

article/2025/8/27 13:32:48

ADB识别手机系统弹授权框包含某段文字-并自动点击确定按钮

--蓝牙电话App自动部署

  • 上一篇:手机打电话时将对方DTMF数字转为RFC2833发给局域网SIP坐席

    下一篇:编写中。


    一、前

蓝牙电话方案中,我们提供了将手机通话的语音拦截后转发到局域网坐席的能力。但在手机App的安装和使用过程中,由于Android系统的特性,我们总是要弹出很多的授权框,然后不停的去点“确认”和“允许”。在App安装时首次启动如此、在后续app运行过程中的蓝牙扫描-配对绑定-连接的过程以及USB模块拔插的过程同样如此。

有时,我们就在想:有没有一种办法,能够一劳永逸的实现让Android系统弹出的授权框、状态栏通知、悬浮通知消息等等系统级别的界面,我们普通App也能让它自动消失?(不弹出来,或者刚弹出来就直接识别后自动点击确认按钮使其消失?)

而这也是本篇章编写的由来,本文努力在Android系统的世界里,使用普通的手机App应用,尝试不同的道路,使app能够根据预设规则中已知的某些弹出框中可能存在某段文字,识别出对应的弹出框,并自动调用操作使其自动确认消失。

本文主要阐述方案原理和实现机理,后续的篇章中会尝试将其实现方案整合到拨号器SDK的应用中,进行功能的整合与使用

体验和下载地址:

智能拨号器App:http://120.78.211.195:8060/Dialer.apk

拨号器SDK示例app:http://120.78.211.195:8060/sdk/SdkDemo.apk

USB蓝牙配件购买路径(参考):https://item.taobao.com/item.htm?_u=pk10l4ccbcd&id=649368472986

  • 二、系统弹出框的多样性

弹出框的多样性主要包括下述两个方面:

1、App在运行过程中需要弹出或级联弹出多个授权框或提示框,都需要逐个去允许和确定。

2、不同厂商的型号的手机,普通应用App面临的弹框的样式、内容、位置均不同。

对于蓝牙SDK对应的App,在App首次运行并授予各种悬浮窗/SD卡/通知权限之后,正常运行期间涉及USB拔插和蓝牙连接的弹出框,界面大致如下图所示(以红米手机为例):

USB插入的授权框(非常重要,是蓝牙电话SDK是否能正常工作的关键)

如果手机没有开启蓝牙,会先弹出框提示开启蓝牙。如果应用App首次安装且App无法获取到本机蓝牙的MAC地址,则会弹出上图右侧的提示框,允许被扫描和发现获取手机蓝牙的MAC地址(这个MAC在之后的蓝牙绑定和连接中会用到)。

若USB蓝牙和手机蓝牙首次绑定,手机还会弹出一个状态栏消息,点击状态栏消息的“配对和连接”按钮后,才会弹出蓝牙的配对框(小米红米系列手机才弹状态栏消息,部分手机会直接弹出蓝牙配对框)。

这些Android系统的授权框和对话框都允许和确认后,手机App就可以正常使用了。后续拔插USB也只会弹出第一个图的【USB插入的授权框】,不会再弹出其它对话框了。

  • 三、Android弹框识别和自动确认原理

我们通过DeepSeek和豆包以及百度的广泛搜索,试了很多种方法,发现还是【adb shell uiautomator】的指令最为靠谱(而且也不需要什么特殊或复杂的权限),指令大致如下:

adb shell uiautomator dump /sdcard/window.xml

通过这个adb命令,可以将界面中元素的标题、resId、坐标位置等内容给一次性获取得到(唯有一个缺点是,命令执行需要约1秒左右的时间)。

uiautomator获取到的内容,展示效果如下图所示:

图示中我们可以通过标题的一部分内容“拨号器SDK”或resId来判断是否是我们预期的界面,如果匹配上则检索其“确定”按钮,并获取该按钮的bonds的区域。

之后调用【adb shell input tap x y】的指令,向Android手机发送点击事件,完成“确定”按钮的自动点击操作。如上图示中的按钮点击指令如下:(bounds最大值的x和y分别减1)

adb shell input tap 977 1339

整个命令在windows的识别和导出以及查找的指令,大致如下图所示:

如果是linux,则findstr直接改为grep即可。

  • 四、自动确认的关键点和难点

如前述章节所述,关键点在于不同的手机厂商的机型,弹出的框的文字描述和按钮可能会被厂商重写导致不一致。在这块上,估计要对不同机型的差异部分做适配。

同时,针对App不同的界面弹窗,我们尽量只自动确认某几个关键的授权框,毕竟自动检测和识别和还是会损耗手机性能和时间的。

在先决条件上,本次选型的方案,无论是【adb shell uiautomator】还是【adb shell input tap x y】指令,均基于adb来进行操作。此部分内容如需要在普通App上进行执行,还需要依赖我们前期做的文章《ADB连接专题-跨互联网adb连接到手机》中介绍的方式来做支撑。

  • 五、总结

本文将尝试探索Android系统弹出框的识别,并在普通App中增加自动确认使其消失的功能。借助ADB的控制指令,本文的方案可根据弹框标题或内容中包含某个关键字来进行预期弹框类型的判断,识别成功后将自动点击其“确定”或“允许”按钮。

通过在普通App中整合此类功能,可快速通过一些因Android授权弹框而阻塞App自动运行的过程,减少了人工行为的干预。在不改变手机操作系统和业务逻辑的情况下,能更大程度的减少操作复杂度。具有一定的现实意义。


http://www.hkcw.cn/article/qLnNNHyWWa.shtml

相关文章

kafka 常用知识点

文章目录 前言kafka 常用知识点1. kafka 概念2. 消息共享和广播3. 分区和副本数量奇偶数 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0…

什么是接口测试,我们如何实现接口测试?

1. 什么是接口测试 顾名思义,接口测试是对系统或组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系。其中接口协议分为HTTP,WebService,Dubbo,Thrift,Socket等类型,测试类型又主要…

我这三年……测试开发工作的一点感悟

从职场小白到测试开发,已经三年有余。回首这段职业旅程,踩过坑,吃过饼,背过锅,也拿过奖。和产品互掐,和开发干仗……也许这就是成长的代价和难忘的经历吧。今天忍不住跟宝子们分享分享我的这段心路历程 初…

[HIT计算机系统大作业] 程序人生-Hello‘s P2P

2025年5月 摘 要 本文以Hello程序为研究载体,系统探究其从源代码到可执行文件再到进程生命周期的完整流程,深度解析计算机系统多层面协同机制。首先阐述预处理、编译、汇编及动态链接的核心步骤:通过gcc工具链生成hello.i(预处…

HIT-ICS 2025春计算机系统大作业 程序人生-Hello’s P2P

摘 要 本报告通过分析hello程序从hello.c源代码到进程终止的完整生命周期,系统阐述了计算机系统的多层次协作机制。首先,通过预处理、编译、汇编与链接阶段,将C语言源代码转换为可执行文件;其次,结合进程管理、存储管理及输入输出管理,深入探讨了进程创建、地址空间转换…

Hello的程序人生

计算机系统 大作业 题 目 程序人生-Hello’s P2P 专 业 未来技术模块 学   号 2023111680 班   级 23WLR14 学 生 姜虹伯 指 导 教 师 吴锐   计算机…

程序人生hello.c

计算机科学与技术学院 2024年5月 摘 要 本文系统分析了HELLO程序从源代码到执行的完整生命周期,揭示了编译系统与操作系统协同工作的底层机制。研究以Ubuntu环境和GCC工具链为基础,覆盖预处理、编译、汇编、链接四大阶段:预处理阶段展开宏…

哈尔滨工业大学HIT-ICS2024大作业-程序人生-Hello‘s P2P

第1章 概述 1.1 Hello简介 ①P2P:这一过程是指 Hello如何从C源文件经过预处理转变为可执行文件,这一过程共需经历四个阶段: 1)预处理器处理,生成文本文件hello.i 2)编译器处理,生成汇编程序…

开源项目的认识理解

目录 开源项目有哪些机遇与挑战? 1.开源项目的发展趋势 2.开源的经验分享(向大佬请教与上网查询) 3.开源项目的挑战 开源项目有哪些机遇与挑战? 1.开源项目的发展趋势 1. 持续增长与普及 - 开源项目将继续增长&#xff0c…

HIT-CSAPP大作业-程序人生

摘 要 本文概述了hello.c源文件从预处理、编译、汇编、链接到最终执行的关键步骤,阐述了程序在操作系统中的加载与运行过程。同时,通过对hello程序在进程管理、存储结构和输入输出控制方面的介绍,帮助读者对程序的整个生命周期有了基础认识…

普通人的四年程序人生

还记得当初自己为什么选择计算机? 当初你问我为什么选择计算机,我笑着回答:“因为我梦想成为神奇的码农!我想像编织魔法一样编写程序,创造出炫酷的虚拟世界!”谁知道,我刚入门的那天&#xff0…

【老张的程序人生】一天时间,我成软考高级系统分析师

今年下半年,我心血来潮报考了软考高级系统分析师。彼时的我,工作繁忙至极,一周十四节课,班主任的职责压身,还兼任教学管理事务,每日忙得晕头转向,那点可怜的闲暇时光,也都奉献给了游…

HIT-2024CSAPP 程序人生-Hello‘s P2P大作业

摘要 本文借助hello.c程序,结合本学期计算机系统课程所学习的大部分内容,分析了hello.c这个程序的一生,探讨了从源程序到可执行程序转变的全过程,包含预处理,编译,链接,生成等步骤,在…

第七届下一代数据驱动网络国际学术会议(NGDN 2025)

在线投稿: 学术会议-学术交流征稿-学术会议在线-艾思科蓝 张彦,挪威奥斯陆大学信息工程学院教授,IEEE Fellow,IET Fellow。入选欧洲科学院院士,挪威皇家科学院院士,挪威工程院院士,2018-2022连续五年全球“高被引科学家”近期主要研究方向为新一代无线通信网络和智…

Selenium 测试框架 - Kotlin

🚀Selenium Kotlin 实践指南:以百度搜索为例的完整测试示例 随着测试自动化的普及,Selenium 已成为 Web 自动化测试的事实标准,而 Kotlin 凭借其简洁语法和高安全性,越来越受到开发者欢迎。本指南将通过一个完整的实战案例——在百度中执行搜索操作,来展示如何使用 Sele…

记录一次wkhtmltopdf生成pdf造成oom问题

问题现象 有个生成pdf的接口,到处pdf为空;docker环境必现,但是本地环境无法复现 1、代码增加各处错误判断,发现docker环境调用接口出现 Loading pages (1/6) [> …

YOLOX 的动态标签分类(如 SimOTA)与 Anchor-free 机制解析2025.5.29

YOLOX 的动态标签分类(如 SimOTA)与 Anchor-free 机制是其核心改进中的两个关键部分,它们在目标检测中的作用和实现方式存在显著差异。以下从原理、实现细节及效果三个方面进行详细对比: 一、核心原理与目标 1. Anchor-free 机制…

netTAP 100:在机器人技术中将 POWERLINK 转换为 EtherNet/IP

工业机器人服务专家 年轻的 More Robots 公司成立仅一年多,但其在许多应用领域的专业技术已受到广泛欢迎。这是因为More Robots提供 360 度全方位服务,包括从高品质工业机器人和协作机器人到咨询和培训。这包括推荐适合特定任务或应用的机器人&#xff0…

Allegro 16.6 aidt(自动等长)巧用

在我刚刚进入这个圈子的时候,身边的人都在用allegro16.3,但近一年隐约觉得用16.6的人多了起来,但对于16.6的理解是少有人去探究的,这也急不来,让我们慢慢道来 今天带给大家的是aidt的使用,不仅仅是功能的使用,相信你读了会有所启发。 使用方法 首先连好需要做等长的线,…

SSH免密登录其它用户脚本

这个是同一个网段下免密互联的脚本仅供大家参考 首先我们先需要安装一个sshpass文件 我的是rocky系统 yum install sshpass -y 否则会有报错 这个版本只能是第一台主机(即执行此脚本命令的主机)登录到其他主机免密,反之不免密。 #!/bin/ba…