【问题标题】:Showing all broadcast events on Android显示 Android 上的所有广播事件
【发布时间】:2011-01-05 01:02:57
【问题描述】:

是否有可能显示在 android 中触发的所有广播事件/意图?我只是想知道我是否可以快速确定应用程序是否正在使用我可以挂钩的意图/广播。对于大多数股票 android 应用程序,我可以阅读源代码,但很耗时。

【问题讨论】:

  • 如果没有记录“广播意图/事件”,请不要使用它们。它们不是供第三方开发者连接的,可能会在应用更新时发生变化,可能违反 EULA 或其他许可协议等。
  • 更好的方法是询问应用程序的开发人员,看看他们是否同意将某些意图/广播视为“公开”,即他们承诺不会更改它们,以便其他应用程序可以继续使用它们.
  • 当然还有 openintents.org 上的众包注册表,但遗憾的是它还没有很丰富。
  • 我想知道我手机的内部音乐播放器 (motorola defy) 是否会在曲目发生变化时发送广播。猜猜它不像我希望的那么简单

标签: java android android-intent


【解决方案1】:

使用以下终端命令列出所有历史广播和注册的广播接收者:

$ adb shell dumpsys 活动广播

【讨论】:

  • 或更好:dumpsys activity broadcasts history
【解决方案2】:

请查看此开源项目以查看您的 Android 手机上的所有广播:Broadcasts Monitor Pro

【讨论】:

    【解决方案3】:

    有 logcat,您可以从 ddms(专用应用程序或 eclipse 视图)访问它,它应该列出所有广播以及与意图关联的属性。但是,正如您帖子中的其他评论者所说,除非意图已发布,否则您真的不应该这样做。它可能会改变,或造成其他形式的破坏。虽然我不同意这种说法,但有些人甚至会说如果许可证不兼容,那就是非法的。 (虽然我不是这样的一方,因为您没有静态链接到代码,甚至也没有将其放入您的包中)。

    【讨论】:

    • 如果我错了,请纠正我,但 logcat 不会显示发送的广播。它确实显示了 Activity 意图(使用 startActivity 发送的意图),日志如下:“I/ActivityManager(61): Starting: Intent ...”。
    • 并且要明确一点:显示系统中发送的所有广播可能很有用,仅用于调试目的,即使您不打算在应用中使用未记录的广播。跨度>
    【解决方案4】:

    我发现最好的工具是Intent Intercept,它可以即时捕捉意图并允许您检查内容

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      • 2016-01-25
      相关资源
      最近更新 更多