package com.weishu.upf.dynamic_proxy_hook.app2;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.weishu.upf.dynamic_proxy_hook.app2.hook.HookHelper;

/**
 * @author weishu
 * @date 16/1/28
 */
public class MainActivity extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Button tv = new Button(this);
        tv.setText("测试界面");

        setContentView(tv);

        tv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent.setData(Uri.parse("http://www.baidu.com"));

                // 注意这里使用的ApplicationContext 启动的Activity
                // 因为Activity对象的startActivity使用的并不是ContextImpl的mInstrumentation
                // 而是自己的mInstrumentation, 如果你需要这样, 可以自己Hook
                // 比较简单, 直接替换这个Activity的此字段即可.
                getApplicationContext().startActivity(intent);
            }
        });
    }

    @Override
    protected void attachBaseContext(Context newBase) {
        super.attachBaseContext(newBase);
        try {
            // 在这里进行Hook
            HookHelper.attachContext();

            // TODO: 16/1/28 支持Activity直接跳转请在这里Hook
            // 家庭作业,留给读者完成.
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

@@ -240,16 +240,17 @@
 Button;%0A
+%0A
 import c
@@ -390,16 +390,17 @@
 Activity
+ 
 %7B%0A    @O
@@ -460,24 +460,24 @@
 nceState) %7B%0A
-
         supe
@@ -504,24 +504,98 @@
 anceState);%0A
+%0A        // TODO: 16/1/28 %E6%94%AF%E6%8C%81Activity%E7%9B%B4%E6%8E%A5%E8%B7%B3%E8%BD%AC%E8%AF%B7%E5%9C%A8%E8%BF%99%E9%87%8CHook%0A        // %E5%AE%B6%E5%BA%AD%E4%BD%9C%E4%B8%9A,%E7%95%99%E7%BB%99%E8%AF%BB%E8%80%85%E5%AE%8C%E6%88%90.%0A%0A
         Butt
@@ -1531,89 +1531,8 @@
 t();
-%0A%0A            // TODO: 16/1/28 %E6%94%AF%E6%8C%81Activity%E7%9B%B4%E6%8E%A5%E8%B7%B3%E8%BD%AC%E8%AF%B7%E5%9C%A8%E8%BF%99%E9%87%8CHook%0A            // %E5%AE%B6%E5%BA%AD%E4%BD%9C%E4%B8%9A,%E7%95%99%E7%BB%99%E8%AF%BB%E8%80%85%E5%AE%8C%E6%88%90.
 %0A   

修复动态代理里面的作业说明.