【问题标题】:get name of activity within Intent获取 Intent 中的活动名称
【发布时间】:2013-01-01 14:37:32
【问题描述】:

我正在使用一些不同的广告网络,它们都需要将自己的活动名称添加到清单中。

我想知道用户何时点击它们,所以我为startActivity(Intent intent) 设置了一个覆盖,但我需要检查意图对象以有条件地设置一些值。

例如,使用 tap 的网络,它将从类 com.ads.TapForTap 启动一个活动。单击这将调用 startActivity(Intent intent) 我如何从意图中获取类的名称?

谢谢

【问题讨论】:

    标签: android android-intent ads start-activity


    【解决方案1】:

    您可以使用给定的意图参数的组件类名称。记住类名可能是空的!

    intent.getComponent().getClassName()

    【讨论】:

    • 请注释您的答案以使其有用。我们不需要复制/粘贴解决方案。我们需要帮助提问者和读者理解解决方案。
    【解决方案2】:

    尝试下一行获取当前活动名称,

    this.getClass().getSimpleName()
    

    【讨论】:

    • 我需要从意图对象中获取它。不是来自当前班级。这可能会起作用
    • 这确实获得了活动的名称,但不是包名。没关系,我可以用这个
    【解决方案3】:

    如果您有,以下行应返回您要启动的 Activity 的完全限定名称:

    • 启动 Activity 的 Intent
    • 一个上下文实例(因此您可以调用getPackageManager())。

    String className = myIntent.resolveActivity (myContext.getPackageManager()).getClassName();
    

    有关详细信息,请参阅resolveActivity()Intent 文档。

    【讨论】:

    • @CQM 你试过了吗?根据我的测试,它会为您提供全名 (com.package.ActivityName),但也许我误读了您想要的内容。
    • 当时我真的需要任何方法来区分软件包,以解决我的根本问题,我所做的是if(!context.getClass().getSimpleName().contentEquals("")),因为这种情况只会在点击各种广告网络之一时触发,由于我可能会添加更多内容,因此我不需要更多细节
    猜你喜欢
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多