有没有一种简单的方法可以找出一个 Intent
是显式的还是隐式的?
我正在尝试按照Android文档中推荐的行为实现导航抽屉,即应用程序启动时自动打开抽屉,直到用户手动打开它。
然而,使用导航抽屉的活动可以从我的应用程序内部的多个位置以及外部启动。我希望仅在从我的应用程序外部启动活动时打开抽屉,但我找不到一种简单的方法来查找意图的来源。
Intent
中有几个方法最初看起来很有前途:
getComponent()
似乎可以在发送端(你已经知道的地方)提供信息(null / not null),但根据文档,在接收端永远不会为null。hasCategory()
可以用于查找外部意图的已知类别,例如android.intent.category.LAUNCHER
。这可能是我最终使用的方法,但我宁愿拥有一个通用解决方案,而不是在此处考虑每种可能性。getPackage()
看起来可能做了正确的事情,但除非我没有正确使用它,否则它似乎总是在我的测试中返回null。
另外,我也可以始终使用putExtra()
来向所有内部意图添加标志,但是这感觉太像一个 hack,所以如果有其他选择,我宁愿避免使用它。