当前位置: 首页 > wzjs >正文

国内网站开发公司做网站挂广告 刷广告

国内网站开发公司,做网站挂广告 刷广告,缙云建设局网上协同办公oa网站,淘宝做导航网站手机App-插入USB时自动授权点击确定按钮-使系统弹出框自动消失 --蓝牙电话SDK自动部署 上一篇:App识别安卓系统弹授权框包含某段文字-并自动点击确定按钮 下一篇:ADB识别手机系统弹授权框-如何处理多重弹框叠加和重叠问题 一、前言 经过前面两个篇章《…

手机App-插入USB时自动授权点击确定按钮-使系统弹出框自动消失

--蓝牙电话SDK自动部

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

    下一篇:ADB识别手机系统弹授权框-如何处理多重弹框叠加和重叠问题


    一、前

经过前面两个篇章《手机app如何跳过无障碍权限实现弹框自动点击-ADB连接专题》和《App识别安卓系统弹授权框包含某段文字-并自动点击确定按钮》的预研和技术探索,我们对Android中,普通应用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

  • 二、需求的引入-为何系统会弹框

早年的Android操作系统,对App需要开启哪些权限仅需要在AndroidManifest.xml文件中对权限进行申明,即可在App运行过程中具备对应的使用权限。

后来,Android学坏了。从Android6.0开始,逐步的增加了授权弹框的机制和功能:App的开发者不仅需要在AndroidManifest.xml文件进行申明,还需要在App运行过程中弹出对话框出来,需要用户手动去点击允许或确认,才能获取得到某个它认为比较关键的权限。

当然,如果我们是Android系统开发者,我们可以在代码中屏蔽此部分的弹框。但对于普通应用开发者而言,这个搞法就比较恶心人了)。

在弹框权限中,我们依照坑爹程度,将授权弹框按弹出的频率进行分类,可以大致分为如下三类:

1、App安装后只会弹一次:允许后哪怕是应用升级也不会再弹新的授权框。此部分弹框包括普通的读取SD卡权限、访问通讯录权限、悬浮窗权限等非常多的常见权限。

2、每次重启手机后,都需要重新获取一次的权限。比如adbd网络映射到5555端口。

3、每次运行都会触发的弹窗授权,比如无障碍模式、比如外置USB配件的拔插等。

在我们的应用中,上述这三种弹窗授权都会碰到。

如果应用App要做成“免装机模式”,安装完后不想人工运行和操作就直接用,那么就应该吧上述这三种弹窗都通过自动化脚本,做成自动确认的模式。

我们本期将针对第三种,即每次运行都会触发的弹窗授权进行自动化操作。(第一第二种的授权,由于弹窗太过复杂,不同品牌手机不同系统版本的界面都有差异,建议还是App安装后使用人工点击一次。

在【蓝牙电话SDK】中,App运行过程中,每次拔插USB均会弹出USB授权窗口,不确认它就无法识别外置USB配件。非常烦人,本次就搞它,让它自动消失。

  • 三、Android弹框时应用能知道吗?

知道的,根据Android的开发规范:应用想要获取某个权限,除了需要在AndroidManifest.xml文件申明<uses-permission />或<uses-feature />之外,需要应用App本身逻辑去主动调用和请求对应的权限,然后Android系统才会做出弹框处理,弹出授权窗口供手机用户进行手动的点击授权。授权成功后才会返回对应的手机权限给到App进行使用。

对于外置USB配件拔插的事件,也是同样的道理。Android会产生对应的广播事件,将插入和拔出消息通知到对应的App,如果App确定要消费这个事件,才会由App去主动请求对应的USB打开请求。然后Android才会做出弹窗提示和处理。

也就是说,Android系统所有的授权框,都是由用户App来进行触发的。只是Android操作系统认为,这个功能比较谨慎,需要由手机用户亲自来做确认,才能开放给普通App。

  • 四、应用如何识别当前的弹框是不是自己预期的那个?

由于授权弹框操作是异步的。对于普通应用App而言,它只负责在Activity中重写onRequestPermissionsResult等待返回授权成功/授权失败的结果,然后调用

ActivityCompat.requestPermissions(ctx, permis, requestCode);

接口进行权限的请求即可。

但对于本篇文章的课题而言,我们需要知道当前弹的窗口,到底是不是自己预期的窗口(因为很有可能会弹出了多个窗口形成了覆盖)。由于前面篇章中我们讲到可以使用:

adb shell uiautomator dump /sdcard/window.xml

的指令,提取得到手机最上层界面的所有元素的内容快照。

本篇章中,我们将直接在应用App中读取/sdcard/window.xml文件的字符串,通过关键字的检索等方式,查找和匹对弹出框标题及包含的内容。通过这样的方式来识别出当前最上层的窗口是哪一个,并针对性的做点击处理。

  • 五、App如何做自动点击

依照前文《App识别安卓系统弹授权框包含某段文字-并自动点击确定按钮》可知,在Android的App中,可使用【adb shell input tap x y】的指令,向Android手机发送点击事件,实现App的自动点击操作。

事实上,光说【adb shell xxx】指令比较虚。在代码开发中,如果想让应用app实现发送和执行adb指令,需要实现一个自己的adb客户端。

通常来说,安卓App实现adb客户端一般有两种办法:

1、使用Google自带的【com.android.ddmlib】的相关库,进行异步连接和指令收发;

2、使用第三方开源库如adblib来封装adb客户端的逻辑(本质上就是一个socket收发特定格式的tcp数据),开源库路径可参考:

https://github.com/tananaev/adblib

  • 六、困难点和关键点

本文的自动点击的方式基于安卓手机的adb命令,通过Socket连接到设备的ADB端口(默认5555)。因此,每次手机重启后,均需要插入USB调试线,使用【adb tcpip】命令将手机的网络ADB调试功能开启:

adb tcpip 5555

或者开启了端口转发:

adb forward tcp:5555 tcp:5555

另外,由于adb命令将连到手机开放的adbd进程中,因此会涉及密钥配对的问题,即手机会自动弹一个框出来,需要允许对方(也是本机)绑定到当前手机的adbd使用:

好消息是:应用App在手机的运行过程只需要弹一次框,后续将RSA密钥指纹存储到手机sdcard中,从此不管应用是否被卸载,均不会再次弹框做提示。

  • 七、总结

本文使用前述文章列举的理论和原理,最终实现了【插入外置USB配件后系统弹出USB授权弹窗】的自动点击操作。并将这个功能给统一整合到【蓝牙电话方案-拨号器SDK】中,使基于其上的普通应用App能够对弹窗文本进行识别,识别成功后将自动点击其“确定”或“允许”按钮。

通过在普通App中整合此类功能,可快速通过一些因Android授权弹框而阻塞App自动运行的过程,减少了人工行为的干预从而降低操作复杂度。

最后,在文章末尾简单录制一段【手机中插入USB蓝牙,在App弹出授权窗口中自动点击确认允许】的视频,作为实际效果的展示,仅供参考。

手机中插入USB蓝牙,在App弹出授权窗口中自动点击确认允许


文章转载自:

http://4YxdHOh2.Ltrms.cn
http://UbGY7LFm.Ltrms.cn
http://N0syKGD7.Ltrms.cn
http://3ZVNlept.Ltrms.cn
http://4V3rofuN.Ltrms.cn
http://ZJ3JIz0s.Ltrms.cn
http://tlT4coIX.Ltrms.cn
http://zl5J1JoE.Ltrms.cn
http://fiLKjcSu.Ltrms.cn
http://BFJJweLj.Ltrms.cn
http://pI7Ujx1X.Ltrms.cn
http://VGo4mT4A.Ltrms.cn
http://HkV3af0N.Ltrms.cn
http://LS6BzcRW.Ltrms.cn
http://hmOFTKpz.Ltrms.cn
http://r4ItEmro.Ltrms.cn
http://bhEtlz9B.Ltrms.cn
http://RaPpYkN5.Ltrms.cn
http://w9Y4N652.Ltrms.cn
http://EtMGm8S1.Ltrms.cn
http://xXlwD9rV.Ltrms.cn
http://q4Qv9Muy.Ltrms.cn
http://kqKerGxF.Ltrms.cn
http://ENUIYual.Ltrms.cn
http://icpxEj3k.Ltrms.cn
http://Jg93jq30.Ltrms.cn
http://mArvWk9f.Ltrms.cn
http://MbX2nUB1.Ltrms.cn
http://eUfkxzSj.Ltrms.cn
http://jusj3yvS.Ltrms.cn
http://www.dtcms.com/wzjs/768827.html

相关文章:

  • 做3d建模贴图找哪个网站网站建设本地还是外地
  • 宁波网站建设设计报告抖音广告投放平台
  • 免费手机山西seo顾问
  • 手机html5网站模板网站栏目词
  • 网站建设开源程序哈尔滨站建筑面积
  • 与设计行业相关的网站成都网站建设成都app开发
  • 叮当快药网站谁做的电子商务网站建设答辩记录
  • 上海的网站建设登录腾讯邮箱企业邮箱入口
  • 北京企业网站报价西宁网站seo外包
  • 电商网站怎么推广html5响应式网站源码
  • 做外贸的免费网站深圳网站建设知名 乐云践新
  • 微信怎么做自己的网站激励视频广告
  • 做房产应看的网站长春专业做网站的公司
  • wordpress多语言企业网站网站建设公司广东
  • 东莞网站优化电话海南新政策最新消息
  • 邢台做网站价位注册公司需要提供的资料及公司注册流程
  • 网站开发文本编辑器品牌建设运营的最高境界是
  • 网站开发全栈教程互联网应用开发是什么
  • 为什么我的网站没有百度索引量网站和系统的区别
  • 佛山美容网站建设安仁网站制作
  • 怎么样网站建设做电商网站用什么软件开发
  • 上海公共场所seo计费系统oem
  • 成都网站托管制作图片的软件哪个好
  • 高能建站系统怎么收费wordpress文件夹权限设置方法
  • 广州商城网站建设报价蜜雪冰城网络营销
  • 长春做网站公司哪家好搭建企业网站宽带多大
  • 网站设计有限公司wap网站定位
  • 前端个人网站模板中国互联网信息中心
  • 产品发布网站如何做网站公司名seo
  • 蚌埠哪有做网站的西安 域名空间网站制作