Android过滤startActivity请求

原理:

context.startActivity跳转间接使用Instrumentation对象execStartActivity方法,而Instrumentation存在于ActivityThread中,有趣的是在应用启动后,有且只有一个ActivityThread对象,那么Instrumentation也只有一个,也就是说不管哪个Context使用startActivity方法都是间接使用同一个Instrumentation对象。既然要过滤startActivity请求,那么可以通过替换原来的Instrumentation来达到我们的目的。这里使用代理模式,在做具体实现之前,先执行我们设定的动作(过滤)。

注:如果使用JDK自带的代理处理模块,在Android上不能运行,因为Android使用的Dalvik字节码,而不是java字节码,需要使用第三方库dexmaker。


完整项目下载


1、实现代理接口

作用:在执行execStartActivity方法前先过滤。


2、替换Instrumentation

作用:自定义Instrumentation功能



转载于:https://my.oschina.net/u/3368992/blog/861864

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值