为什么主活动具有意图过滤器?

3
  1. 如果意图过滤器是用于解决隐式意图,那么为什么 MainActivity(这是应用程序启动时运行的第一个活动)有一个意图过滤器?
  2. 谁向它发送了隐式意图?
  3. 如果发送的隐式意图没有正确的数据,会发生什么?
2个回答

2
系统是如何知道哪个活动是主要活动的呢?它并不是通过名称来判断,系统并不关心名称。而是通过具有意图过滤器的活动来判断它是否为主要活动。
它还可以拥有其他意图过滤器,以任何你想要的方式启动它。例如,你可能会有一个意图过滤器通过深度链接来启动它。
至于正确的数据 - 如果从应用列表或主屏幕启动,它将没有任何数据。这取决于应用程序员确保在这种情况下它能够做出有意义的事情。

  1. 明白了。
  2. 明白了。例如,如果用户在网站上点击地址,则我们的地图应用程序可以使用意图过滤器启动。我的理解正确吗?请问什么是深度链接?
- sofs1
移动设备的深度链接是指像http://example.com/myUrl这样的URL,打开应用程序中的一个活动而不是网页。 - Gabe Sechan
默认意图过滤器无法处理深链接。为此,您需要创建一个单独的意图过滤器。 - Damanpreet Singh
@DamanpreetSingh 我并没有说它会。我只是说这是主活动可能有过滤器的另一个原因。 - Gabe Sechan

1
  1. 它具有CATEGORY_LAUNCHER和ACTION_MAIN。 android.intent.action.MAIN表示此活动是应用程序的入口点,即当您启动应用程序时,将创建此活动。 CATEGORY_LAUNCHER指示您的活动应显示在顶级启动器中。

https://developer.android.com/reference/android/content/Intent.html#ACTION_MAIN

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接