安卓系统跳过广告

101 阅读2分钟

1、分析需求 常用命令 查看最前端Activity具体的是谁 比如跳过广告页是以下的activity,可以参照activity的启动流程来阻止它的启动界面

adb shell dumpsys activity activities ResumedActivity: ActivityRecord{91b87aa u0 com.example.myapplication/.MainActivity t78}

这里的ResumedActivity就是当前最top的Activity

2、方案选择

2.1 dumpsys发现广告页面和主页面不是一个Activity,广告页面是第一个启动页面,然后会跳转到主页面 故以此是否可以想到相应的方案: 按照以前分析思路,应用层 --- 》 应用框架 --》system_server 顺序来

应用层:即启动广告页面的是Launcher这个应用,故是否可以考虑Launcher中修改? 这样修改会有什么考虑不全的问题吗?那就是1、启动应用不一定在Launcher,在其他应用商店都是可以的 2、Launcher有可能安装第三方的

应用框架:基本可以覆盖所有情况 优点:简单快捷,可以较快实现功能 缺点:有可能破坏一些应用的初始化时序,故可能该方案不能覆盖针对所有带广告应用

image.png

2.2 发现广告页面一般会有一个跳过按钮

是否可以考虑在广告Activity模拟一个触摸点击跳过

优点:最大限度保证带广告自身逻辑

缺点:还是可以看到短暂广告,而且每个应用不一定都有跳过,而且跳过按钮可能不一定位置一样,要考虑“跳过”按钮的坐标位置,导致也无法满足覆盖所有应用,需要挨个适配

1). 点击的流程 image.png

2). 考虑点击事件从系统那个代码出来的-->打印堆栈的调用方法查看log.i("","",new exception()) image.png

3)系统框架的点击 image.png

4)注入点击的事件,down 和 up事件 image.png

5)在onResume方法进行执行

onResume方法是Activity的生命周期方法之一,当Activity从不可见状态变为可见状态时,就会调用onResume方法。也就是说,当用户返回到该Activity时,onResume方法会被调用。在onResume方法中,我们通常做一些初始化的工作,比如重新加载数据、更新UI等。因为onResume方法会在用户看到Activity之前调用,所以我们可以在这个方法中做一些耗时的操作。

image.png