有什么区别:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME"/>
</intent-filter>
和:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
最佳答案
在这里查看答案
What is the meaning of android.intent.action.MAIN?
android.intent.action.MAIN
表示此 Activity 是应用程序的入口点,即当您启动应用程序时,会创建此 Activity 。
来自docs
ACTION_MAIN with category CATEGORY_HOME -- Launch the home screen.
此外,来自 here
Activity Action Start as a main entry point, does not expect to receive data.
android.intent.category.DEFAULT 主要用于隐式 Intent 。如果您的 Activity 希望通过隐式 Intent 启动,它应该在其过滤器中包含此类别。 如果您的 Activity 可能在没有指定特定类别的情况下由隐式 Intent 启动,则其 Intent 过滤器应包含此类别。
查看文档..
- http://developer.android.com/reference/android/content/Intent.html
- http://developer.android.com/guide/topics/manifest/action-element.html
和@CommonsWare 的另一种观点....在那个答案中也......看到它
所以ACTION_MAIN
被视为应用程序的入口点。
通常与CATEGORY_LAUNCHER
结合使用在<intent-filter>
指示应出现在主屏幕启动器或任何其他认为自己是启动器的 Activity 中。这样的“启动器”可以查询PackageManager
, 使用 queryIntentActivities()
, 以找到此类 Activity 并将其显示给用户。
然而,ACTION_MAIN
可以与其他类别结合用于其他专门用途。例如,CATEGORY_CAR_DOCK
与 ACTION_MAIN
表示当用户将手机放入制造商提供的车载底座时应被视为候选对象的 Activity 。
当 Intent
与 startActivity()
一起使用, 如果 Intent
尚未放入类别,已放入 CATEGORY_DEFAULT
.因此,一个 <activity>
<intent-filter>
需要指定一些 <category>
, 使用 <category android:name="android.intent.category.DEFAULT" />
如果没有别的。
关于android - 在 AndroidManifest.xml 中单独使用 intent.category.HOME 与同时使用 intent.category.DEFAULT 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38500649/