Не работает трансляция оболочки 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()Одним из них является то, что другие приложения не могут отправлять эти трансляции в ваше приложение.

Другие вопросы по тегам