
lauchModle 检测: ActivityStarter.startActivityUnchecked()
绕过AndroidManifest检测:
Activity替换原来的Activity
拿到ActivityManagerNative里面的IActivityManager对象动态代理拦截startActivity函数,获取原来的srcIntent,重新new一个代理Activity的newIntent,newIntent.putExtra(EXTRA_ORIGIN_INTENT,originIntent),然后用newIntent替换原来的srcIntentActivity实例化之前(laucherActivity的时候),判断intent里面有没有EXTRA_ORIGIN_INTENT字段,如果有的话取出来替换即可
拿到ActivityThread对象里面的Handler对象mH,然后拿到new一个Handler的callback,然后适进去,在这个callback里面处理自己的回归需求。(设置callback的原因是因为我们只处理lauchActivy,不影响其他的操作)。
这里注意AppCompatActivity需要兼容,先拿到ActivityThread里面的IPackageManager,然后动态代理拦截getActivityInfo()函数的ComponentName替换为代理Activity的ComponentName