Как узнать откуда звонит широковещательный приемник?

Я работаю над комбинацией нескольких крупных проектов, которые мне не очень знакомы. У меня есть локальная трансляция событий и она регистрируется по сценарию.

context.registerReceiver(stReceiver, stIntents);

private BroadcastReceiver stReceiver = new BroadcastReceiver() {

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

}
};

Мне нужно выяснить, откуда этот широковещательный приемник звонит? Есть ли способ узнать, из какого класса .sendBroadcast(intent); звонки?

4 ответа

Я не уверен на 100%, работает ли это или нет, но попробуйте. Используйте отчет журнала для печати intent.getClass().getName() в onReceive функция. Так как намерение передается от вызывающего класса, оно предоставит имя класса.

Вы можете проверить действие для намерения. и искать действие в вашем проекте

String action =intent.getAction();

Насколько мне известно 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

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
Другие вопросы по тегам