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

堆栈打印跟踪Activity的启动过程(基于Android10.0.0-r41),framework修改,去除第三方app的倒计时页面

文章目录

  • 堆栈打印跟踪Activity的启动过程(基于Android10.0.0-r41),framework修改,去除第三方app的倒计时页面
    • 1.打印异常堆栈
    • 2.去除第三方app的倒计时页面
    • 3.模拟点击事件跳过首页进入主页

堆栈打印跟踪Activity的启动过程(基于Android10.0.0-r41),framework修改,去除第三方app的倒计时页面

1.打印异常堆栈

,查看Activity的onCreate如何回调的

        Log.i(TAG, "onCreate: ", new Exception());

在这里插入图片描述

编译

在这里插入图片描述

logcat -c清除日志缓存

logcat -s qfh过滤tag

在这里插入图片描述

在这里插入图片描述

跟踪堆栈调试发现,onCreate的回调大致从这里开始

在这里插入图片描述

走到这

在这里插入图片描述

往下走

在这里插入图片描述

那系统又是怎么调用handleLaunchActivity的?

系统Handler发消息以及处理消息

在这里插入图片描述

执行

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

从这里就能看出系统调用handleLaunchActivity的过程

2.去除第三方app的倒计时页面

查看位于最上层的activity,想办法去掉这个倒计时页面直接进入主页面

在这里插入图片描述

adb shell dumpsys activity activities | grep “Resumed”

查看最顶层

在这里插入图片描述

framework中修改,一般都是lanucher界面启动我们的第三方app

@Overridepublic void startActivity(Intent intent, @Nullable Bundle options) {//qfh addComponentName originCom = new ComponentName("com.example.myapplication2", "com.example.myapplication.WelcomeActivity");ComponentName targetCom = new ComponentName("com.example.myapplication2", "com.example.myapplication.MainActivity");if (intent.getComponent() != null && intent.getComponent().equals(originCom)) {intent.setComponent(targetCom);}//qfh endif (options != null) {startActivityForResult(intent, -1, options);} else {// Note we want to go through this call for compatibility with// applications that may have overridden the method.startActivityForResult(intent, -1);}}

在这里插入图片描述

这样就可以拦截我们想要拦截的Activity了

进到倒计时的下一个页面

在这里插入图片描述

3.模拟点击事件跳过首页进入主页

自定义一个方法处理点击按钮事件

@CallSuperprotected void onResume() {if (DEBUG_LIFECYCLE) Slog.v(TAG, "onResume " + this);dispatchActivityResumed();mActivityTransitionState.onResume(this);enableAutofillCompatibilityIfNeeded();if (mAutoFillResetNeeded) {if (!mAutoFillIgnoreFirstResumePause) {View focus = getCurrentFocus();if (focus != null && focus.canNotifyAutofillEnterExitEvent()) {// TODO: in Activity killed/recreated case, i.e. SessionLifecycleTest#// testDatasetVisibleWhileAutofilledAppIsLifecycled: the View's initial// window visibility after recreation is INVISIBLE in onResume() and next frame// ViewRootImpl.performTraversals() changes window visibility to VISIBLE.// So we cannot call View.notifyEnterOrExited() which will do nothing// when View.isVisibleToUser() is false.getAutofillManager().notifyViewEntered(focus);}}}notifyContentCaptureManagerIfNeeded(CONTENT_CAPTURE_RESUME);mCalled = true;//qfh addComponentName originCom = new ComponentName("com.example.myapplication2", "com.example.myapplication.TestWelcomeActivity");if (originCom.equals(getComponentName())){Log.i(TAG, "originCom.equals(getComponentName()) == true");mHandler.postDelayed(new Runnable() {@Overridepublic void run() {injectClick(420,52);}}, 1000);}//qfh end}

在这里插入图片描述

//qfh add //处理跳过按钮的坐标,模拟点击跳过广告页按钮private void injectClick(int x, int y) {MotionEvent downAction = MotionEvent.obtain(android.os.SystemClock.uptimeMillis(),android.os.SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, x, y, 0);dispatchTouchEvent(downAction);MotionEvent upAction = MotionEvent.obtain(android.os.SystemClock.uptimeMillis(),android.os.SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, x, y, 0);mHandler.postDelayed(new Runnable() {@Overridepublic void run() {Log.i(TAG, "injectClick");dispatchTouchEvent(upAction);}},100);}//qfh end

注入一个点击事件

在这里插入图片描述

这样模拟点击事件跳过也可以的

相关文章:

堆栈打印跟踪Activity的启动过程(基于Android10.0.0-r41),framework修改,去除第三方app的倒计时页面

文章目录 堆栈打印跟踪Activity的启动过程(基于Android10.0.0-r41),framework修改,去除第三方app的倒计时页面1.打印异常堆栈2.去除第三方app的倒计时页面3.模拟点击事件跳过首页进入主页 堆栈打印跟踪Activity的启动过程(基于Android10.0.0-r41)&#x…...

只允许内网访问时,如何设置hosts

1、Hosts文件简介 hosts文件是一个没有扩展名的计算机文件,用于将主机名与对应的 IP 地址关联起来。在操作系统中,hosts文件通常用于在本地解析域名,以便将域名映射到特定的IP地址。这个文件可以用来屏蔽广告、加速访问特定网站、解决DNS解析…...

nature《自然》期刊文献怎么在家查看下载

nature《自然》期刊我们都知道,是世界上历史悠久的、最有名望的科学杂志之一。下载该期刊文献是需要使用权限的,如果你没有nature《自然》期刊的资源,又该如何获取呢?请看本文的经验分享。 一、先百度“文献党下载器” 在文献党下…...

python作业五

题目:注册登录 制作一个注册登录模块 注册:将用户填入的账户和密码保存到一个文件(users.bin) 登陆:将用户填入账户密码和users.bin中保存的账户密码进行比对,如果账户和密码完全相同 那 么登录成功,否则登录失败…...

经典的设计模式和Python示例(一)

目录 一、工厂模式(Factory Pattern) 二、单例模式(Singleton Pattern) 三、观察者模式(Observer Pattern) 一、工厂模式(Factory Pattern) 工厂模式(Factory Pattern…...

Ubuntu服务器如何安装桌面

更新软件库 apt-get update 升级软件 apt-get upgrade 安装ubuntu桌面系统 apt-get install ubuntu-desktop 运行过程需要手动确认两次,选择 Y。 安装完成之后,终端输入 reboot,重启服务器。...

填报表如何实现电话号码的校验

单元格校验时,只能输入数字和特定字符(-),即实现固话和手机号码的校验,保证录入的规范,应如何实现? 解决方案:使用正则表达式实现校验效果,如下图所示: 校验…...

揭秘全网热门话题:抖音快速涨粉方法,巨量千川投流助你日增10000粉

在当今社交媒体的时代( 千川投流:hzzxar)抖音成为了年轻人分享自己才华和生活的平台。然而,要在抖音上快速获得关注和粉丝,却不是一件容易的事情。今天,我们将揭秘全网都在搜索的抖音快速涨1000粉的秘籍,带…...

电脑提示‘找不到msvcr110dll,无法继续执行代码’的解决方法,3分钟快速修复

不知道大家有没有遇到过这种情况,无端端电脑提示你找不到msvcr110dll,无法继续执行代码?当出现这个情况,证明你的某个程序就已经运行不了,你需要去修复这个错误,才能正常的运行程序,下面我们一起来详细的了…...

如何在Hostease的Linux虚拟主机上永久移除WordPress网站

最近有遇到客户咨询如何移除Linux虚拟主机上的WordPress网站的, 因为原先的站点长时间不更新,被恶意篡改,跳转到了一个博彩网站上,本身网站也比较旧了,客户也不准备修复,准备重新建站。但是又怕移除不干净&…...

【云原生】Docker 的网络通信

Docker 的网络通信 1.Docker 容器网络通信的基本原理1.1 查看 Docker 容器网络1.2 宿主机与 Docker 容器建立网络通信的过程 2.使用命令查看 Docker 的网络配置信息3.Docker 的 4 种网络通信模式3.1 bridge 模式3.2 host 模式3.3 container 模式3.4 none 模式 4.容器间的通信4.…...

如何优雅的实现浏览器多标签通讯

前言 开发过程中无法避免遇到需要进行多标签通讯的情况,例如: 管理员登陆后,其他打开标签的页面登陆状态要变更课堂页面只能打开一个,另一个则通知失效等等。。。场景 然而实现该功能,我们需要使用页面能共同持有的…...

刷题之不相同的字符串(卡码网模拟)

卡码网不同的字符串 #include<vector> #include<string> #include<iostream> using namespace std; int main() {int n0;cin>>n;for(int i0;i<n;i){string s;cin>>s;vector<int>hash(26,0);for(int j 0;j < s.size();j)hash[s[j…...

JS-导入导出

export和export default是ES6中导出模块中变量的语法 导入导出变量 //导出方法&#xff08;js文件中&#xff09; export const 变量名值//导入方法 对应导入的变量&#xff0c;一定要加花括号 import {变量名} from js文件路径 导入导出函数 //导出方法&#xff08;js文件中…...

【代码随想录——数组篇】

代码随想录——数组篇 2. 二分查找3. 移除元素4. 有序数组的平方5. 长度最小的子数组6. 螺旋矩阵II 2. 二分查找 力扣题目链接 前提&#xff1a; 有序数组数组中无重复元素 代码&#xff1a; &#xff08;版本一&#xff09;左闭右闭区间 class Solution {public int sea…...

使用 js 类封装项目中音频播放功能的工具方法utils

在前端开发中&#xff0c;音频播放功能是一个常见的需求&#xff0c;我们经常需要在项目中加入音频播放、音频提示等功能。为了提高开发效率和代码复用性&#xff0c;我们可以封装一个工具方法来管理音频播放功能。 在本文中&#xff0c;我将介绍如何封装项目中音频播放功能的…...

【超详细】R语言贝叶斯方法在生态环境领域中的高阶技术应用

查看原文>>>R语言贝叶斯方法在生态环境领域中的高阶技术应用 目录 专题一&#xff1a;前期资料 专题二&#xff1a;R和Rstudio入门和绘图&#xff08;含ggplot&#xff09; 专题三&#xff1a;R语言数据清洗-tidyverse包应用 专题四&#xff1a;贝叶斯回归模型-回…...

Python 正则表达式 re . 符号

Python 正则表达式 re . 符号 正文示例1示例2 正文 用法说明&#xff1a;(点号) 在默认模式下&#xff0c;匹配除换行符以外的任意字符。 如果指定了 flags 参数 DOTALL &#xff0c;它将匹配包括换行符在内的任意字符。 示例1 import restr1 abcde print(re.search(., str…...

智慧监控 高效运维

随着企业IT建设的不断深入和完善&#xff0c;IT管理的重要性逐渐被重视&#xff0c;打通数据割裂&#xff0c;使业务更加充分融合。亟需一套统一的平台来实现跨品牌跨设备类型的集中监控和管理。 LinkSLA带外监控平台&#xff0c;不仅适用于大规模或超大规模的运维场景&#x…...

JAVA每日面试题(一)

Java面试问题及答案 1. 解释Java中的垃圾回收机制和如何优化它 问题&#xff1a; 在Java中&#xff0c;垃圾回收&#xff08;Garbage Collection, GC&#xff09;是如何工作的&#xff1f;作为一名Java开发者&#xff0c;你如何优化垃圾回收以提高应用性能&#xff1f; 答案…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...