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

article/2025/8/13 9:36:24

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

--蓝牙电话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/wFGehwGAfA.shtml

相关文章

上海高考报名人数逆势上涨 招生计划调整引关注

2025年上海秋季高考考生人数预计将超过6万人,比2024年增加近万人。上海市教育考试院透露了这一数据,并表示已经与全国高校沟通在沪招生计划增量。预计今年在沪招生的本科计划数将有所增加,但受限于高校教育资源承载力等因素,本科计划增量不一定能完全匹配生源的增长。对于今…

长了痣到底要不要除掉 专家建议关注“问题痣”

近日,演员孙俪出席时尚芭莎年度派对。亮相时,网友发现她的唇下痣消失了,随后话题#孙俪唇下痣没了#登上热搜。其实,在《甄嬛传》播出期间,孙俪唇下的一个小黑点就引发过观众的关注。到《芈月传》和《那年花开月正圆》播出期间,这颗痣已经成为她面部轮廓的一个标志。然而,…

62岁俞敏洪骑行摔倒受伤:犯困睡着了 网友刷屏关注

5月29日,俞敏洪在青海骑行时不小心摔倒,膝盖等部位受伤出血,引起了许多网友的关注。30日凌晨1点多,俞敏洪发文表示自己只是皮外伤,骨头没有问题,并感谢大家的关心。他在文中写道:“今天骑车有点睡着了,摔了一下,感谢广大朋友关心。皮外伤,不用担心,报平安。”俞敏洪…

德国将向乌提供军援传递何种信号 加大军事支持

乌克兰总统泽连斯基计划于当地时间28日访问德国,期间将与德国总理默茨讨论俄乌和平谈判等议题。默茨表示,德国及其盟友已不再限制提供给乌克兰的武器射程,这使得乌克兰能够攻击俄罗斯本土深处的军事目标。他还强调,德国将继续在军事上支持乌克兰,但未明确是否会向乌方提供…

郑钦文晋级法网16强 状态火热再创佳绩

北京时间5月30日,法国网球公开赛女单第三轮比赛中,郑钦文以2比0战胜18岁加拿大小将姆博科,顺利晋级法网16强。首盘比赛仅耗时36分钟,郑钦文轰出3记ACE球,成功完成两次破发,以6-3率先拿下第一盘。这是郑钦文职业生涯第二次闯入法网16强,在罗兰加洛斯的连胜场次也达到了九…

中行原副行长张小东任新职 或将出任农发行行长

中国农业发展银行官网消息显示,前中国银行副行长张小东已担任农发行党委副书记。经过一系列流程后,张小东或将出任该行新行长。今年3月,在中行2024年度业绩发布会上,张小东表示,2025年中国银行将继续为服务实体经济提供有力金融支持,提升信贷增长质效。预计全年境内人民币…

Linux《进程概念(中)》

在之前的Linux《进程概念(上)》当中我们已经了解了进程的基本概念以及如何去创建对应的子进程,那么接下来在本篇当中我们就继续来进程的学习,在本篇当中我们要学习到进程的状态、进程的优先级、进程切换、Linux真实的调度算法——…

HarmonyOS-hdc远程网络方式连接设备

hdc工具使用手册 1 hdc简介 hdc(OpenHarmony Device Connector)是为开发人员提供的用于设备连接调试的命令行工具,pc端开发机使用命令行工具hdc,该工具需支持部署在Windows/Linux/Mac等系统上与OpenHarmony设备(或模…

React Native鸿蒙化关于第三方库安装问题

最近在学习RN适配鸿蒙的过程中,对于安装各种第三方库踩坑各种报错,最终研究后解决了大部分,今天写一篇文档来记录一下踩坑的过程。 首先,RN环境搭建就不赘述了,目前rnoh/react-native-openharmony最新稳定发布版本为0…

鸿蒙知识总结

判断题 1、 在http模块中,多个请求可以使用同一个httpRequest对象,httpRequest对象可以复用。(错误) 2、订阅dataReceiverProgress响应事件是用来接收HTTP流式响应数据。(错误) 3、ArkTS中变量声明时不需要…

【Linux】——从0到1的学习,让你熟练掌握,带你玩转Linux,教你安装Java常用软件、及spring boot项目部署

🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大三学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL&#xff0…

【Linux】线程池和线程补充内容

个人主页~ 线程池 一、线程池简介单例模式线程池简介 二、单例模式线程池的实现1、ThreadPool.hpp2、Task.hpp3、main.cpp 三、其他常见锁读写锁 一、线程池简介 池化技术我们并不陌生,我们在前面的文章中实现过进程池,这里线程池的作用也是先申请资源交…

Linux:进程间通信---消息队列信号量

文章目录 1.消息队列1.1 消息队列的原理1.2 消息队列的系统接口 2. 信号量2.1 信号量的系统调用接口 3. 浅谈进程间通信3.1 IPC在内核中数据结构设计3.2 共享内存的缺点3.3 理解信号量 序:在上一章中,我们引出了命名管道和共享内存的概念,了解…

【HarmonyOS Next之旅】DevEco Studio使用指南(五) -> 添加/删除Module

目录 1 -> 创建新的Module 2 -> 导入Module 3 -> 配置distroFilter/distributionFilter分发规则 4 -> 删除Module 1 -> 创建新的Module Module是应用/元服务的基本功能单元,包含了源代码、资源文件、第三方库及应用/元服务配置文件,…

Linux离线部署Dify:Docker从镜像拉取打包到无网环境中部署

文章目录 前言一、在线环境操作1. 获取dify项目(使用魔法)2.进入项目中docker目录3.镜像拉取4.查看镜像5.镜像打包6.镜像(项目)上传 二、离线环境操作1.镜像导入2.启动服务3.验证容器启动状态4.访问服务 三、部分参考链接 前言 设…

34年聘用职工被强制“自愿转保” 退休手续拖延逾一年

冯爱文,一位年满61岁的河北石家庄市井陉县税务局原聘用人员,已经一年多没有办理退休手续,没有任何收入来源,全靠子女接济和回收旧衣服为生。他在办理退休手续时被县社保局要求签署“自愿”转为企业或灵活就业人员参保申请书,因拒绝签字,退休手续被拖延超过一年。在石家庄…

英国首相批法拉奇“画饼” 经济方案异想天开

英国首相基尔斯塔默于5月29日批评极右翼政党英国改革党党首奈杰尔法拉奇提出的经济方案是“异想天开”,并警告如果该政党上台执政,英国经济将遭受重创。近期英格兰部分地区举行的地方选举中,英国改革党取得显著进展,赢得超过670个地方议会席位,并在两场市长选举和一场议会…

澳媒:嘉能可将300亿澳元资产转至澳 为合并铺路

澳大利亚金融评论报网站报道,全球大宗商品巨头嘉能可通过大规模重组将超过300亿澳元的海外资产转移到一家澳大利亚子公司,此举旨在为未来与其他大宗商品巨头达成大型合并做准备。这些资产包括嘉能可在加拿大、南非和哥伦比亚的煤矿业务,在阿根廷的铜资源业务以及在南非的锰、…

成都一男子伤人后自伤颈部 警方通报 因感情纠纷引发

2025年5月30日15时许,中纱帽街8号负一层发生一起持刀伤人事件。接警后,公安机关迅速组织警力到场处置,并当场控制了犯罪嫌疑人陆某某(男,26岁)。经初步调查,陆某某因感情纠纷前往前女友胡某某(女,24岁)的工作单位,双方发生口角后,陆某某持随身携带的水果刀将胡某某…

航电系统音频模块设计要点与技术突破

一、设计要点 音频输出模块: 1. 高可靠性 符合航空级环境标准(DO-160G),耐受温度、振动、湿度极端变化。 冗余设计:双通道输出,支持自动切换故障通道。 2. 抗干扰设计 电磁兼容性(EMC&a…