adb shell 广播不起作用,而 sendBroadcast(intent) 运行良好

adb shell broadcast not work while sendBroadcast(intent) works well

我有一个 class 注册接收者,如下所示:

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()));
    }
}

在其他一些classes中,我使用代码来广播Intent。效果很好。

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

我是否正确使用添加命令?

LocalBroadcastManager 是一个帮助程序,用于注册 Intent 广播并将其发送到进程中的本地对象。与 Contenxt.sendBroadcast() 相比,这有数量限制,其中之一是其他应用程序无法将这些广播发送到您的应用程序。