Android AccessibilityService 实现《李跳跳》功能

news2024/11/29 20:54:26

AccessibilityService(无障碍服务)是 Android 操作系统中的一个功能,旨在帮助用户具有视觉、听觉或运动上的障碍更轻松地使用设备。它是 Android 提供的一种特殊服务,可以接收设备上发生的各种事件,并提供自定义的反馈或处理方式。

AccessibilityService 可以在用户界面上监控和操作应用程序,并为用户提供额外的辅助功能。它接收系统级别事件,如按键、触摸、通知等,还可以访问应用程序的视图层次结构,以便分析和操作应用程序的界面元素。


《李跳跳》是一款用于跳过开屏广告的工具类应用,它的核心原理就是通过 AccessibilityService 检测页面的跳过字样,自动点击来完成的。

使用方法:先自定义一个 AccessibilityService

public class MyAccessibilityService extends AccessibilityService {

    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        AccessibilityNodeInfo source = event.getSource();
        if (source == null)
            return;

        for (int i = 0; i < source.getChildCount(); i++) {
            if (source.getChild(i).getText() == null) return;

            if (source.getChild(i).getText().toString().contains("跳过")) {
                Log.i("wk", "检测到跳过");
                source.getChild(i).performAction(AccessibilityNodeInfo.ACTION_CLICK);
            }
        }
    }

    @Override
    public void onInterrupt() {
    }
}

然后往 AndroidManifest(清单文件)上配置:

    <application

        <service
            android:name=".MyAccessibilityService"
            android:label="自定义无障碍服务"
            android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService" />
            </intent-filter>

            <meta-data
                android:name="android.accessibilityservice"
                android:resource="@xml/serviceconfig" />
        </service>

    </application>

其中 label 就是这个无障碍服务的名称(可以自定义)

serviceconfig 配置文件:

<?xml version="1.0" encoding="utf-8"?>
<accessibility-service
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:accessibilityEventTypes="typeAllMask"
    android:accessibilityFeedbackType="feedbackAllMask"
    android:canRetrieveWindowContent="true" />

ok,到目前为止功能方面 已经配置好了,该 app 安装到手机上后,需要去系统设置中去打开这个服务:系统设置 -> 智能辅助 -> 无障碍(每个手机大同小异,建议直接搜无障碍

点进去开启之后就能够实现自动识别和点击屏幕的 "跳过" 字样了


功能实现是实现了,但是我发现这个无障碍服务的权限实在是太大了,因为它能捕获屏幕信息,又能操作屏幕,是对用户隐私安全威胁非常大的,所以在开发和使用无障碍服务时,需要确保遵循相关的安全和隐私规范,以保护用户的个人信息和设备安全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/741373.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UWB的技术特点

近年来&#xff0c;超宽带(UWB)无线通信成为短距离、高速无线网络最热门的物理层技术之一。 UWB的产生与发展 超宽带(UWB)有着悠久的发展历史&#xff0c;但在1989年之前&#xff0c;超宽带这一术语并不常用&#xff0c;在信号的带宽和频谱结构方面也没有明确的规定。1989年&a…

2023年了,v-if和v-for的优先级千万别怼错了,可尴尬的...

前言 v-if和v-for到底是谁的优先级更高呢&#xff1f;在vue3版本出来之前你直接说v-for更高&#xff0c;我无法反驳你&#xff0c;但是老哥现在是2023年了&#xff0c;咱可不兴这样回答了&#xff0c;可尴尬的... 剖析 我们都知道&#xff0c;这个v-if是条件渲染&#xff0c;…

flutter开发实战-Running Gradle task ‘assembleDebug‘ 的解决方法

flutter开发实战-Running Gradle task ‘assembleDebug‘ 的解决方法 使用Android studio经常出现Running Gradle task ‘assembleDebug‘问题&#xff0c;记录一下解决方法。 一、在Android目录下更改build.gradle 将repositories中的google(), mavenCentral() repositori…

一、简单的Spring Authorization Server示例代码

需要有一定的OAuth2的基础 需要有一定的Spring Security基础 Spring Authorization Server 官方简介&#xff1a;Spring Authorization Server is a framework that provides implementations of the OAuth 2.1 and OpenID Connect 1.0 个人理解为OAuth 2.1 and OpenID Conne…

用技术指标伦敦金行情走势图

经常有投资者说&#xff0c;伦敦金行情走势图老是涨跌涨跌&#xff0c;抓不准它涨跌的规律&#xff0c;老是被它弄得头昏脑胀。其实看伦敦金行情走势图的方法有很多&#xff0c;最直接的就是使用技术指标。技术指标本来就是投资者为了避免伦敦金行情走势图上价格干扰性波动&…

玩转AI二维码:分享我的漂亮二维码生成秘诀

这几天我又生成了很多漂亮的二维码图片&#xff0c;有了一些感受和想法&#xff0c;特总结此文&#xff0c;分享给大家 先看效果&#xff0c;喜欢的可以继续读下去&#xff08;遵守平台规则&#xff0c;图片已阉割&#xff0c;需要更多图片参数的同学可直接看文章最后&#xf…

Leap AI + Python 开发绘图应用

使用python语言&#xff0c;并借助Leap AI网站的api key&#xff0c;可以轻松实现AI绘图功能。使用时&#xff0c;用户只要输入prompt提示词&#xff0c;几秒钟之内服务器就能生成图片并返回图片的链接地址。开发人员可以利用这个功能开发个性化的绘图软件&#xff0c;或者整合…

后端Linux软件安装大全[JDK、Tomcat、MySQL、Irzsz...持续更新中]

文章目录 前言1.软件安装方式2.安装jdk3.安装Tomcat4.安装MySQL5.安装lrzsz 总结 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#xff0c;方便日后回顾。当然&#xff0c;如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚&…

Webkit浏览器内核探究——Webkit简介

文章目录 1、什么是Webkit2、Webkit做了什么3、Webkit组成4、应用程序如何利用Webkit的 1、什么是Webkit Wekbit是一个开源的Web浏览器引擎&#xff0c;也就是浏览器的内核。 Apple的Safari, Google的Chrome, Nokia S60平台的默认浏览器&#xff0c;Apple手机的默认浏览器&…

如何监测电路中恶性负载

随着社会的发展和科技的进步&#xff0c;人们对于用电的安全性和稳定性要求越来越高。电路中的恶性负载往往会导致电路故障&#xff0c;甚至引发火灾等严重事故。因此&#xff0c;如何监测电路中的恶性负载成为了一个重要的课题。本文将从恶性负载的定义、监测方法、防范措施等…

【新版系统架构】第十八章-安全架构设计理论与实践

信息安全体系架构设计 信息系统安全设计重点考虑&#xff1a;系统安全保障体系&#xff0c;信息安全体系架构 系统安全保障体系&#xff1a; 安全区域策略的确定&#xff0c;根据安全区域的划分&#xff0c;主管部门应制定针对性的安全策略统一配置和管理防病毒系统&#xff…

【实验一】java基础

1、每个非素数都可以唯一地被分解为若干素数地乘积&#xff0c;请编程对其进行验证。 个人答案&#xff1a; package 实验1;import java.util.Scanner;public class sushu {public static Scanner input new Scanner(System.in);public static void main(String[] args) {Sy…

【工具使用】VS Code 某些文件夹为灰色全局搜索搜不到该文件夹的内容

一&#xff0c;简介 本文主要介绍在VS Code使用过程中&#xff0c;出现文件夹为灰色&#xff0c;且搜索内容时灰色文件夹中的字符串检索不到问题的原因和解决方法&#xff0c;从而提高工作效率。供参考。 二&#xff0c;问题现象 VS Code中部分文件夹显示为灰色&#xff0c;…

找工作第三弹——JS面试题由浅入深

目录 前言理论篇1.js的单线程2.js的数据类型3.js的内存泄漏4.js的宏任务与微任务&#xff08;事件循环机制&#xff09;5.js的作用域与作用域链6.js的闭包7.ES6新增8.原型和原型链8.深浅拷贝9.js的防抖和节流10.js中的this指向11.改变this指向的call、apply、bind12.事件流13.D…

Git 命令提交和分支控制

强大的分支和合并&#xff1a;Git 提供了强大的分支功能&#xff0c;使得开发者可以轻松创建、合并和管理分支。这种灵活性使得团队可以同时进行多个任务和实验性开发&#xff0c;而不会相互干扰 Git 在处理大型代码仓库和版本历史时表现出色。它使用了一种称为“快照”的机制…

数据处理轻松搞定:如何利用PaddleNLP高效处理大规模文本数据

目录 前言一、paddleNLP介绍、特性1-1、介绍1-2、特性介绍 二、paddleNLP安装三、PaddleNLP一键使用3-1、中文分词3-2、词性标注3-3、命名实体识别3-4、依存句法分析&#xff08;DDParser&#xff09;3-5、解语知识标注3-6、文本纠错&#xff08;ERNIE-CSC&#xff09;3-7、文本…

工业园区扬尘噪音监测,该怎么操作?这篇告诉你!

随着工业园区的不断发展和扩大&#xff0c;扬尘和噪声问题成为引起关注的重要环境挑战。工业活动产生的扬尘和噪声不仅对周边居民的生活质量和健康构成威胁&#xff0c;也对环境可持续性产生负面影响。 因此&#xff0c;进行有效的扬尘和噪声监测成为管理者和决策者必须关注和解…

【打包问题】执行mvn spotless:apply之后,import的包被去移除了

import的包被去移除了 出现的问题mvn spotless:apply的作用原因在哪解决方式快速恢复代码的规范性 出现的问题 执行mvn spotless:apply之后 mvn spotless:apply的作用 简单来说这个就是执行代码的规范化 原因在哪 我为了展示效果所以把下满应该引入的包注释了出来&#xf…

CDN应用的三大技术及五大优点

CDN应用的三大技术 CDN的实现需要依赖多种网络技术&#xff0c;如负载均衡技术、动态内容分发与复制技术、缓存技术等&#xff0c;以下为您做简要介绍&#xff1a; 1、负载均衡技术 负载均衡技术就是将网络中的流量尽可能平均分配到多个能完成相同任务的服务器或网络节点&am…

奇葩功能实现:级联选择框组件el-cascader实现同一级的二级只能单选,但是一级可以多选

前言&#xff1a; 其实也不能说这个功能奇葩&#xff0c;做项目碰到这种需求也算合理正常&#xff0c;只是确实没有能直接实现这一需求的现成组件。 el-cascader作为级联选择组件&#xff0c;并不能同时支持一级多选&#xff0c;二级单选的功能&#xff0c;只能要么是单选或者…