首页
社区
课程
招聘
[求助][求助]请问xposed模块怎么得到context
发表于: 2016-9-28 20:27 22140

[求助][求助]请问xposed模块怎么得到context

2016-9-28 20:27
22140
我想在hook方法里写个dialog,可是得不到context,请问怎么才能得到context呢

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 215
活跃值: (372)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
1.有全局context处理的hook那个get方法
2.方法所在类继承context可以用MethodHookParam实例的thisObject
2016-9-30 13:43
0
雪    币: 189
活跃值: (192)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
AndroidAppHelper.currentApplication().getApplicationContext()
2016-9-30 14:56
1
雪    币: 1385
活跃值: (5609)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
4
网上说这种也可以。
try  {
        Class<?>  ContextClass  =  findClass("android.content.ContextWrapper",  loadPackageParam.classLoader);
        findAndHookMethod(ContextClass,  "getApplicationContext",  new  XC_MethodHook()  {
                @Override
                protected  void  afterHookedMethod(MethodHookParam  param)  throws  Throwable  {
                        super.afterHookedMethod(param);
                        if  (applicationContext  !=  null)
                                return;
                        applicationContext  =  (Context)  param.getResult();
                        XposedBridge.log("CSDN_LQR-->得到上下文");
                }
        });
}  catch  (Throwable  t)  {
        XposedBridge.log("CSDN_LQR-->获取上下文出错");
        XposedBridge.log(t);
}
2018-1-6 10:01
1
雪    币: 2375
活跃值: (433)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
supperlitt 网上说这种也可以。 try { Class ContextClass = findClass("android.content.ContextWrapper", loa ...
用xposed,手机速度会明显变慢么?
2018-2-10 20:57
0
雪    币: 9628
活跃值: (3708)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6

我是这么获取的,Hook 应用的主 Activity 的 onResume 方法:

launcherUI = (Activity)param.thisObject;
Context context = launcherUI.getApplicationContext();
2018-2-10 21:16
0
雪    币: 574
活跃值: (405)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
3楼方法好使
2019-5-23 16:09
1
雪    币: 2726
活跃值: (1110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
Context mContext = (Context) AndroidAppHelper.currentApplication();
2022-5-5 22:28
0
雪    币: 1552
活跃值: (3333)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
昨天我也遇到这个问题,由于xposed 调用时机问题,上面的全部没有用.我这边直接在activity创建后拿到对象进而获取Context.
XposedHelpers.findAndHookMethod("android.app.Instrumentation", loadPackageParam.classLoader,"prePerformCreate", Activity.class,new XC_MethodHook() {
           @Override
           public int compareTo(XCallback o) {
               return 0;
           }

           @Override
           protected void afterHookedMethod(MethodHookParam param) throws Throwable {
               super.afterHookedMethod(param);
               MainActivityContext = (Context) param.args[0];

           }
2022-11-26 10:44
0
雪    币: 3344
活跃值: (2009)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
10

也可以不用hook,反射构造一个新的Context对象:
ContextImpl appContext = ContextImpl.createAppContext(mActivityThread, this);

Ref: https://github.com/WindySha/Xpatch/blob/ce279838ad2a1492bdc5a1f799fdb5399340a36b/loader/src/main/java/com/wind/xposed/entry/util/XpatchUtils.java#L25

最后于 2022-11-28 12:20 被WindStormy编辑 ,原因:
2022-11-28 12:17
0
雪    币: 859
活跃值: (925)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
随便拿到当前activity的一个view的变量   view.getContext() 应该也行吧
2022-12-1 09:50
0
游客
登录 | 注册 方可回帖
返回
//