gpt4 book ai didi

android - 如何检查 Intent 是显式还是隐式?

转载 作者:行者123 更新时间:2023-11-29 17:52:49 25 4
gpt4 key购买 nike

是否有一种简单的方法来确定 Intent 是显式还是隐式?

我正在尝试使用 the Android docs 中推荐的行为实现抽屉导航,即抽屉应在应用启动时自动打开,直到用户手动打开它。

但是,使用抽屉导航的 Activity 可以从我的应用程序内外的各种位置启动。我只想在从我的应用程序外部启动 Activity 时打开抽屉,但我找不到一种简单的方法来找出 Intent 的来源。


Intent 中有几个方法最初看起来很有希望:

  • getComponent()似乎会在发送端(您已经知道!)为您提供信息(null/not null),但根据文档,在接收端永远不会为 null。
  • hasCategory()可用于查找已知类别的外部 Intent ,例如 android.intent.category.LAUNCHER。这可能是我最终使用的,但我宁愿有一个通用的解决方案,也不愿在这里尝试解释每种可能性。
  • getPackage()看起来它可能会做正确的事情,但除非我没有正确使用它,否则它似乎总是在我的测试中返回 null。

或者,我总是可以使用 putExtra() 为我所有的内部 Intent 添加一个标志,但这感觉太像黑客了,所以如果有其他选择,我宁愿避免它。

最佳答案

Is there a simple way to find out whether an Intent is explicit or implicit?

鉴于您的其余问题,这不是您所需要的。你真正应该问的是:

How can I determine internal Intent invocations from external ones, with limited hassle?

在那种情况下,对于许多应用程序,您可以使用此算法:如果 getAction()null,则它是一个内部显式 Intent .否则,假设它是外部的。

如果出于各种原因,您正在使用操作字符串来启动本地 Activity (尽管还在 Intent 上设置了组件并使其显式化),那么您将需要回退到“添加一个额外的东西。通常,如果您使用显式 Intent 启动本地 Activity ,则不会设置操作字符串,这使得操作字符串成为隐式(操作不是 null ) 和显式(操作 null)。

关于android - 如何检查 Intent 是显式还是隐式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21735990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com