ADB shell:如何获取将接收BOOT_COMPLETED Intent的BroadcastReceiver列表?

dav*_*ola 6 android adb android-intent dumpsys adb-shell

我正在调试一个应该在设备启动后自动启动的应用程序.为此我创建了一个BroadcastReceiver并将其添加到我的AndroidManifest.xml:

<receiver android:name=".receiver.StartupBroadcastReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

这在大多数设备上始终有效.然而,在一台设备(MXQ Pro机顶盒)上,它只能在大部分时间工作.到目前为止,我还没有找到任何模式,当它工作时,它没有.

所以,我想找出哪些BroadcastReceivers实际上是当前在系统中注册的,以接收BOOT_COMPLETED Intent.

我玩了一下

  • pm:但这只告诉我哪些包想要收到Intent
  • dumpsys:但它的输出是压倒性的,我不知道该寻找什么

谢谢你的建议!

Ale*_* P. 9

如果你只是需要确认一些特定的接收器是否已正确注册(即你只关心某个特定包中的接收器,你知道其名称),那么就像使用注释中建议的@pskinkdumpsys package my.package.name一样.

但是如果你确实想知道系统范围内的所有接收器都会收到一些特定的意图 - 因为你可以使用Android 7.0

adb shell cmd package query-receivers --brief -a android.intent.action.BOOT_COMPLETED
Run Code Online (Sandbox Code Playgroud)

--brief如果需要更多详细信息,请删除参数.并列出名称:

adb shell cmd package query-receivers --components -a android.intent.action.BOOT_COMPLETED
Run Code Online (Sandbox Code Playgroud)