ActivityBridge.java 文件源码

java
阅读 35 收藏 0 点赞 0 评论 0

项目:atlas 作者:
public static void processActivityIntentIfNeed(Object activityclientrecord) {
    try {
        Class ActivityClientRecord_Class = Class.forName("android.app.ActivityThread$ActivityClientRecord");
        Field intent_Field = ActivityClientRecord_Class.getDeclaredField("intent");
        intent_Field.setAccessible(true);
        Intent intent = (Intent) intent_Field.get(activityclientrecord);
        if (intent.getComponent() != null && intent.getComponent().getClassName().startsWith(String.format("%s%s",BridgeUtil.COMPONENT_PACKAGE,BridgeUtil.PROXY_PREFIX))){
            Field activityInfo_Field = ActivityClientRecord_Class.getDeclaredField("activityInfo");
            activityInfo_Field.setAccessible(true);
            Intent originalIntent = unWrapperOriginalIntent(intent);
            ActivityInfo info = AdditionalPackageManager.getInstance().getNewComponentInfo(originalIntent.getComponent(),ActivityInfo.class);
            activityInfo_Field.set(activityclientrecord, info);
            intent_Field.set(activityclientrecord,originalIntent);
        }
    } catch (Throwable e) {
        e.printStackTrace();
    }

}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号