10

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

<receiver android:name=".receiver.StartupBroadcastReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

这在大多数设备上一直有效。然而,在一台设备(MXQ Pro 机顶盒)上,它只能在大部分时间工作。到目前为止,我还没有找到任何模式,它什么时候起作用,什么时候不起作用。

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

我玩了一下

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

感谢您的任何建议!

4

1 回答 1

18

如果您只需要确认某些特定接收器已正确注册(即您只关心您知道名称的某些特定包中的接收器),那么只需使用评论中建议dumpsys package my.package.name@pskink

但是,如果您确实想知道系统范围内接收某些特定意图的所有接收器- 从 Android 7.0 开始,您可以使用

adb shell cmd package query-receivers --brief -a android.intent.action.BOOT_COMPLETED

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

adb shell cmd package query-receivers --components -a android.intent.action.BOOT_COMPLETED
于 2017-07-10T17:29:56.670 回答