Xposed Hook類android.app.NotificationManager時如何獲取Context
阿新 • • 發佈:2019-01-10
最近在使用Xposed hook Android App時,在做一個需求的時候有點懵:如何獲取到android.app.NotificationManager中的Context呢?我的程式碼如下:
XposedHelpers.findAndHookMethod("android.app.NotificationManager", lpparam.classLoader, "notify", String.class, int.class, Notification.class, new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { //獲取context super.beforeHookedMethod(param); } });
首先我一般使用如下的方法去獲得Context:
XposedHelpers.findAndHookMethod(Application.class, "attach", Context.class, new XC_MethodHook() { @Override protected void afterHookedMethod(XC_MethodHook.MethodHookParam param) throws Throwable { super.afterHookedMethod(param); Context context = (Context) param.args[0];//在這裡獲取到Context } }
在這裡我用attach方法獲取到Context,但是在我的情況下,我們在notification裡的引數是沒有Context的,那我們怎麼樣去獲取Context呢?
在這裡我用Context context = AndroidAppHelper.currentApplication();獲取到了一個Context。也就是說,我們有兩種方式去獲得Context,一種是hook生命週期函式或者引數帶Context的函式,去獲得Context;另一種就是直接使用AndroidAppHelper.currentApplication()去獲取到Context。
這應該是Xposed最常用的一個需求了,希望自己能在使用Xposed的過程中更好的學習它。