2014-11-21 49 views
1

如何挂接BroadcastReceiver中的onReceive方法?使用Xposed框架钩住BroadcastReceiver

public class RecentsActivity extends Activity 
{ 
    mIntentReceiver = new BroadcastReceiver() 
    { 
    public void onReceive(Context context, Intent intent) 
    { 
     ... 
    } 
    }; 
} 

回答

1

由于广播接收器是一个抽象类,这是一个内联类的定义,也许你可以检索该广播接收器是这样的:

for(Class<?> cls : <package_name>.RecentsActivity.class.getDeclaredClasses()){ 
    if(BroadcastReceiver.isAssignableFrom(cls)){ 
     //hook onReceive 
    } 
} 

否则请尝试使用apktool检查应用程序smali代码。

可能有一个名为RecentsActivity $ N(其中N是数字)的文件。只需执行Class.forName("<packagename>.RecentsActivity$N")并挂接此类onReceive方法。

祝你好运!

+0

谢谢。我会尽快检查。 – Milek7 2014-12-11 17:12:59

+1

你的提议不起作用,因为他们试图在我的应用程序中找到方法,而不是我想要挂钩的应用程序。 (也许它会工作,当我使用'param.getClass()'而不是'类',但我没有检查这一点)。但解决方案非常简单,通常只使用findAndHookMethod,只能使用smali中的类名,例如。 'com.android.systemui.recent.RecentsActivity $ 1' – Milek7 2014-12-13 10:53:41