【问题标题】:In Android how can I find out the class that processes an Intent at runtime (logcat is fine)在 Android 中,我如何找出在运行时处理 Intent 的类(logcat 很好)
【发布时间】:2015-12-11 23:01:53
【问题描述】:

我有一个大型 Android 应用程序,它使用了一堆隐式意图。我想调试一下,看看哪些类处理每个 Intent。

假设我有意图 A。意图 A 是发送。如何在 logcat 中跟踪哪个类处理此意图?

【问题讨论】:

  • 您是否尝试过查看 logcat 消息?请注意,应用程序不能这样做,只有 ADB 调试主机或其他具有一定特权的系统进程。

标签: android android-intent android-pendingintent


【解决方案1】:

将标志 Intent.FLAG_DEBUG_LOG_RESOLUTION 添加到您的意图中。 logcat 输出在Verbose 级别标记为IntentResolver

【讨论】:

    【解决方案2】:

    要知道意图的类名,可以这样写:

    String className = getIntent().getComponent().getClassName();
    Log.i("Class Name: ", className);
    

    【讨论】:

    • 这个问题特别提到了“隐式”意图,根据定义,这些意图是不指定组件的,因此发件人不会看到任何意图。 getIntent() 只能在接收器中工作,如果那是海报应用程序并运行您建议的代码,它可能已经知道它是“谁”......所以实际上,您的建议仅适用于尝试的不寻常情况找出进入单个应用程序的调用路径。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    相关资源
    最近更新 更多