- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否有一种简单的方法来确定 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/
我是一名优秀的程序员,十分优秀!