为什么Main活动有一个intent过滤器?

时间:2017-01-07 03:53:51

标签: android android-studio android-intent intentfilter android-implicit-intent

  1. 如果intent过滤器要解析隐式意图,那么为什么呢 MainActivity(这是第一个运行时的活动 app已启动)有一个意图过滤器吗?
  2. 谁发出隐含的意图呢?
  3. 如果发送的隐式意图没有正确的数据怎么办?

2 个答案:

答案 0 :(得分:2)

那么,系统如何知道哪项活动是主要活动?它不是名称 - 系统不关心名称。它的意图过滤器的活动说明了它的主要活动。

它还可以使用其他意图过滤器以您可能想要的任何其他方式启动它。例如,您可能有一个意图过滤器,可以通过深层链接启动它。

对于正确的数据 - 如果从应用列表或主屏幕启动,它将没有任何数据。它是应用程序的程序员,以确保它可以做一些在这种情况下有意义的事情。

答案 1 :(得分:1)

  1. 它有CATEGORY_LAUNCHER和ACTION_MAIN。 android.intent.action.MAIN表示此活动是应用程序的入口点,即启动应用程序时,将创建此活动。 CATEGORY_LAUNCHER表示您的活动应显示在顶级启动器中。
  2. https://developer.android.com/reference/android/content/Intent.html#ACTION_MAIN

    1. Launcher向其发送隐式意图。这是启动器知道在点击时打开哪个活动的方式。

    2. 如果您发送的数据不正确,则无法打开您的活动。例如: 如果您尝试仅在startActivity中使用隐式intent启动主活动,则它将无法启动,因为存在与之关联的CATEGORY_DEFAULT。您需要在活动中再添加一个intent_filter来解决意图。