Не работает трансляция оболочки adb, в то время как sendBroadcast(намерение) работает хорошо
У меня есть зарегистрированный получатель класса, как показано ниже:
onStart() {
IntentFilter filter = new IntentFilter();
filter.addAction("ActionName");
LocalBroadcastManager.getInstance(this).registerReceiver(receiver, filter);
}
onStop() {
localBroadcastManager.unregisterReceiver(receiver);
}
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(LOG_TAG, String.format("Broadcast received [action=%s]", intent.getAction()));
}
}
В некоторых других классах я использую код для трансляции намерений. Работает отлично.
Intent intent = new Intent("ActionName");
intent.putExtra("Extra", someObject);
LocalBroadcastManager.getInstance(service).sendBroadcast(intent);
Однако я пытаюсь использовать adb shell для запуска этой функции. Это никогда не отвечает.
adb shell am broadcast -a ActionName -e Extra someObject
Правильно ли я использую команду добавления?
1 ответ
Решение
LocalBroadcastManager
является помощником для регистрации и отправки трансляций содержания для локальных объектов в вашем процессе. Это имеет ряд ограничений по сравнению с Contenxt.sendBroadcast()
Одним из них является то, что другие приложения не могут отправлять эти трансляции в ваше приложение.