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

安卓无障碍获取录屏权限

每次需要录屏操作时,都会弹窗需要用户手动授权比较麻烦,可以通过无障碍模拟用户点击进行授权。

方法主要有三种:

1.查找“立即开始”(华为手机是“允许”)节点,模拟点击;

 @Overridepublic void onAccessibilityEvent(AccessibilityEvent event) {Log.i("AccessibilityEvent", event.toString());if (event == null || !event.getPackageName().toString().contains("com.android.systemui"))//不写完整包名,是因为某些手机(如小米)安装器包名是自定义的return;/*某些手机安装页事件返回节点有可能为null,无法获取安装按钮例如华为mate10安装页就会出现event.getSource()为null,所以取巧改变当前页面状态,重新获取节点。该方法在华为mate10上生效,但其它手机没有验证...(目前小米手机没有出现这个问题)*/Log.i(TAG, "onAccessibilityEvent: " + event);AccessibilityNodeInfo eventNode = event.getSource();/*模拟点击->立即开始,只验证了小米5s plus(MIUI 9.8.4.26)、小米Redmi 5A(MIUI 9.2)、华为mate 10其它品牌手机可能还要适配,适配最可恶的就是出现安装广告按钮,误点安装其它垃圾APP(典型就是小米安装后广告推荐按钮,华为安装开始官方安装)*/AccessibilityNodeInfo nodeInfo= getRootInActiveWindow(); //当前窗口根节点if (rootNode == null)return;if (event.getClassName().toString().contains("MediaProjectionPermissionActivity")) {List<AccessibilityNodeInfo> nodes = nodeInfo.findAccessibilityNodeInfosByText("立即开始");Log.i(TAG, "findTxtClick: " + txt + ", " + nodes.size() + ", " + nodes);if (nodes == null || nodes.isEmpty()) {return;}Log.i(TAG, "findTxtClick: " + txt + ", " + nodes.size() + ", " + nodes);for (AccessibilityNodeInfo node : nodes) {node.performAction(AccessibilityNodeInfo.ACTION_CLICK);}// 回收节点实例来重用if (eventNode != null) {eventNode.recycle();

http://www.mrgr.cn/news/48748.html

相关文章:

  • C语言中缓冲区底层实现以及数据输入的处理
  • Linux内核USB3.0驱动框架分析--USB主机控制器hcd驱动分析
  • 【经管】上市公司供应链金融数据(1990-2023年)
  • React
  • 题解:牛客小白月赛102(A - C)
  • ASR-01和ESP32语音控制LED灯——基于VSCODE编辑器和ESP-IDF环境
  • 《Spring Cloud 微服务:构建高效、灵活的分布式系统》
  • 优秀的面试官!通过一个问题考察了所有网络编程知识点
  • Floyd
  • 51单片机的土壤湿度检测控制系统【proteus仿真+程序+报告+原理图+演示视频】
  • CBA认证培训,业务架构师的筑梦之旅!
  • Windows,MySQL主从复制搭建
  • 状态管理(2)——@State组件内状态
  • 【pyspark学习从入门到精通2】理解pyspark_2
  • 85 外网用户通过域名访问内网服务器
  • 复盘20241012
  • 计算机网络:数据链路层 —— 可靠传输服务
  • 【工具类】hutool http请求获取S3图片流
  • 3D技术的应用场景有哪些?
  • [Gtk] 前言