小视频app源码无障碍服务实现自动跳过APP启动页广告实现的相关代码
一. res目录下新建xml文件夹新建文件accessibility.xml

<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"android:accessibilityEventTypes="typeWindowStateChanged|typeNotificationStateChanged|typeViewTextSelectionChanged|typeViewClicked"android:accessibilityFeedbackType="feedbackGeneric"android:canRetrieveWindowContent="true"android:accessibilityFlags="flagDefault|flagRetrieveInteractiveWindows"android:canRequestTouchExplorationMode="true"android:description="@string/app_name"android:notificationTimeout="100"/>

清单文件中service中配置引用文件

 <serviceandroid:name=".SkipService"android:label="Automaticskip"android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"><intent-filter><action android:name="android.accessibilityservice.AccessibilityService" /></intent-filter><meta-dataandroid:name="android.accessibilityservice"android:resource="@xml/accessibility" />
</service>

清单文件权限如下:

<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />

二. 新建服务SkipService继承AccessibilityService类

package com.androidlmy.automaticskip;import android.accessibilityservice.AccessibilityService;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.content.ComponentName;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Handler;
import android.util.Log;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.Toast;import java.util.List;/*** @功能:* @Creat 2019/12/2 10:16* @User Lmy* @Compony zaituvideo*/
public class SkipService extends AccessibilityService {@Overrideprotected void onServiceConnected() {super.onServiceConnected();AccessibilityServiceInfo config = new AccessibilityServiceInfo();//配置监听的事件类型为界面变化|点击事件config.eventTypes = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED | AccessibilityEvent.TYPE_VIEW_CLICKED;config.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;if (Build.VERSION.SDK_INT >= 16) {config.flags = AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS;}setServiceInfo(config);}@Overridepublic void onAccessibilityEvent(AccessibilityEvent event) {final AccessibilityNodeInfo nodeInfo = event.getSource();//当前界面的可访问节点信息if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {//界面变化事件ComponentName componentName = new ComponentName(event.getPackageName().toString(), event.getClassName().toString());ActivityInfo activityInfo = tryGetActivity(componentName);boolean isActivity = activityInfo != null;if (isActivity) {Log.d("WindowChange", "当前运行包名" + nodeInfo.getPackageName());switch (nodeInfo.getPackageName().toString()) {case "com.netease.cloudmusic":new Handler().postDelayed(new Runnable() {@Overridepublic void run() {skip(nodeInfo.findAccessibilityNodeInfosByViewId("com.netease.cloudmusic:id/c3l"));}}, 500);break;case "cn.xiaochuankeji.zuiyouLite":new Handler().postDelayed(new Runnable() {@Overridepublic void run() {skip(nodeInfo.findAccessibilityNodeInfosByViewId("cn.xiaochuankeji.zuiyouLite:id/btn_skip"));}}, 2000);break;default: {List<AccessibilityNodeInfo> nodeInfoList = nodeInfo.findAccessibilityNodeInfosByText("跳过");for (AccessibilityNodeInfo info : nodeInfoList) {CharSequence charSequence = info.getText();if (charSequence != null) {String msg = charSequence.toString();if (msg.contains("跳过")) {info.performAction(AccessibilityNodeInfo.ACTION_CLICK);Toast.makeText(this, "跳过广告", Toast.LENGTH_SHORT).show();}}}}}}}}private void skip(List<AccessibilityNodeInfo> nodeInfoList) {Log.d("WindowChange", "数据" + nodeInfoList.size());if (nodeInfoList != null && nodeInfoList.size() > 0) {nodeInfoList.get(0).performAction(AccessibilityNodeInfo.ACTION_CLICK);Toast.makeText(getApplicationContext(), "跳过广告", Toast.LENGTH_SHORT).show();}}private ActivityInfo tryGetActivity(ComponentName componentName) {try {return getPackageManager().getActivityInfo(componentName, 0);} catch (PackageManager.NameNotFoundException e) {return null;}}@Overridepublic void onInterrupt() {}
}

主要代码

nodeInfo.findAccessibilityNodeInfosByViewId("com.netease.cloudmusic:id/c3l")

根据已知控件id查找网易云启动页的控件 下面会介绍如何获取控件的id

private void skip(List<AccessibilityNodeInfo> nodeInfoList) {Log.d("WindowChange", "数据" + nodeInfoList.size());if (nodeInfoList != null && nodeInfoList.size() > 0) {nodeInfoList.get(0).performAction(AccessibilityNodeInfo.ACTION_CLICK);Toast.makeText(getApplicationContext(), "跳过广告", Toast.LENGTH_SHORT).show();}}nodeInfoList.get(0).performAction(AccessibilityNodeInfo.ACTION_CLICK);

以上就是小视频app源码无障碍服务实现自动跳过APP启动页广告实现的相关代码, 更多内容欢迎关注之后的文章

小视频app源码无障碍服务实现自动跳过APP启动页广告相关推荐

  1. 比心app源码,携带对象参数跳转页面

    比心app源码,携带对象参数跳转页面实现的相关代码 1.携带对象 json转字符串后进行编码<span slot="action" slot-scope="reco ...

  2. android 快传 源码_最新安卓仿茄子快传APP源码包括服务端源码Android开发快传类项目源码全套...

    适使用范围:  安卓APP茄子快传源码 Android项目源码相似茄子快传的快传项目包括服务端 运行环境:  Android app 源码详细: 本项目是一个基于安卓的相似茄子快传的项目源码,包括安卓 ...

  3. 仿陌陌遇见社交聊天APP源码 网页聊天 LBS地址类社交APP 含Java服务端、PhP管理端等

    因原来创业团队解散,此产品对外整套系统出售源码. 第一,APP开发于2013年,相对创作思想,交互模式,UI模式已经落后了,故此才将APP有出售的想法. 第二,APP项目没有申请著作权,对各位后续开发 ...

  4. 没有内涵段子可以刷了,利用Python爬取段友之家贴吧图片和小视频(含源码)

    由于最新的视频整顿风波,内涵段子APP被迫关闭,广大段友无家可归,但是最近发现了一个"段友"的app,版本更新也挺快,正在号召广大段友回家,如下图,有兴趣的可以下载看看(ps:我不 ...

  5. 3d相册源码java_iOS燃烧动画、3D视图框架、天气动画、立体相册、微信朋友圈小视频等源码...

    iOS精选源码 iOS优质博客 前言之前学习GCD的时候,在很多文章中看到过这段段代码:- (void)viewDidLoad {    ;    NSLog(@"1");     ...

  6. 高校大学生校园app网站源码,校园大学生求职招聘兼职app源码,校园服务app源码,校园php/java网站源码

    本屌丝以前就是做校园代理出身的,最近两年迫于生计转战IT开发行业,以前在学校也想有这么一个牛逼的网站或者系统以及app,找别人开发都是大几十万,一个学生哪来这么多钱呢?自己做又不懂技术,后来暂时将自己 ...

  7. 小视频系统源码H5 直播起航

    一.视频流协议HLS与RTMP HTTP Live Streaming 加粗样式HTTP Live Streaming(简称 HLS)是一个基于 HTTP 的视频流协议,由 Apple 公司实现,Ma ...

  8. 外卖跑腿app源码,小程序上点餐+送货二合一

    如今人们生活节奏快.生活水平在不断提高,闲暇的时间愈来愈少,人们的需求也在不断提高.从而会有一些新型行业诞生.比如,跑腿业务.人们一般都喜欢是线上购物,线上点餐等等的需求.外卖跑腿app源码开发项目越 ...

  9. 手机版电台功能php源码,android音乐电台APP源码(客户端+服务端)

    android音乐电台APP源码(客户端+服务端),支持MP3 , AAC | AAC+ stream,包含Android Studio 2客户端源码.php+mysql服务端源码,功能强大,代码规范 ...

最新文章

  1. Delphi XE4 For IOS之部署问题
  2. Ajax拿取html格式数据
  3. 大学4年毕业后我是如何还清的助学贷款。
  4. HTML5 history新特性pushState、replaceState,popstate
  5. 真无线蓝牙耳机霸主之争:苹果AirPods和索尼WF-1000XM3怎么选?
  6. 一步一步写算法(之 A*算法)
  7. ice通信原理_变频开关电源工作原理,开关电源自我检修
  8. linux 下ip命令对比ifconfig命令
  9. mac mysql降版本_Mac卸載mysql並安裝mysql升級到8.0.13版本
  10. 想成为Python高手,必须看这篇爬虫原理介绍!(附29个爬虫项目)
  11. xp 无法关闭计算机,电脑xp系统关不了机,一直显示在正在关机为什么 除了重装,还能怎么办...
  12. 百度mip推送工具_链接提交主动推送(实时)、熊掌号天级/周级提交、MIP提交
  13. apache-felix实例
  14. 2400字整理Python编码规范,肝了一晚上~
  15. web前端学习526-534(变量概述,变量的使用,变量语法扩展,变量命名规范,推荐Diagram Designer)
  16. Material Design 之Style(三)
  17. 通过.yml文件创建虚拟环境并安装软件时提示pip升级的一些问题
  18. linux i2c dev.h freq,STM32F103ZET(基于秉火开发板)+Cubemx(F1 V1.60库)+IIC+AT24C02(修复官方例程读写死机bug)...
  19. python和c 情侣网名_可爱超萌的情侣网名 超可爱的情侣网名
  20. python获取系统环境变量|os.environ|os.putenv|cmd添加环境变量

热门文章

  1. 算法与数据结构(开篇)
  2. 辞退员工的未休年假要如何补偿
  3. android:maxHeight,android:maxWidth失效,不起作用
  4. Powershell 实现远程唤醒
  5. html萤火虫特效代码,HTML5夜空中的萤火虫
  6. win7 ipv6的默认网关怎么填
  7. 工作站和台式机的区别浅谈
  8. 2020工具钳工(中级)考试题库及工具钳工(中级)复审模拟考试
  9. 登陆联盟手游显示服务器满了,英雄联盟手游已于部分服务器公测,王者玩家亲自体验,操作拉满!...
  10. Spring Cloud微服务java B2B2C商城系统,数据库设计规范