如何找出broadcastReceiver调用的位置?

时间:2016-02-23 05:55:07

标签: android broadcastreceiver android-broadcastreceiver

我正在研究一些我不太熟悉的大型项目。我有一个本地广播事件,它从脚本注册。

context.registerReceiver(stReceiver, stIntents);

private BroadcastReceiver stReceiver = new BroadcastReceiver() {

        @SuppressWarnings("unchecked")
        @Override
        public void onReceive(Context context, Intent intent) {

}
};

我需要找出这个broadcastReceiver来自哪里?有没有办法找出哪个班级.sendBroadcast(intent);来电?

4 个答案:

答案 0 :(得分:1)

我不是百分百肯定,这是否有效但是试一试。 使用Log语句在intent.getClass().getName()函数中打印onReceive。 由于意图是从调用类传递的,因此它将提供类名。

答案 1 :(得分:0)

AFAIK context.registerReceiver(stReceiver, stIntents);本身就是.sendBroadcast(intent);

.sendBroadcast(intent);用于全球广播。对于本地registerReceiver(BroadcastReceiver receiver, IntentFilter filter)来说,足以启动广播。

 I need to find out where is this broadcastReceiver calling from?

所以在你的情况下context.registerReceiver(stReceiver, stIntents);本身就是起点。

欲了解更多信息:

http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html

答案 2 :(得分:0)

您可以检查Intent的操作。并搜索项目中的操作

String action = intent.getAction();

答案 3 :(得分:-1)

You can put check 

like this

@Override
    public void onReceive(Context context, Intent intent) {

if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {
//Do your part

}
}

In place of Intent.ACTION_MEDIA_BUTTON you can use your own action you mention in the intent filter while registering a receiver