Как узнать откуда звонит широковещательный приемник?
Я работаю над комбинацией нескольких крупных проектов, которые мне не очень знакомы. У меня есть локальная трансляция событий и она регистрируется по сценарию.
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