Den*_*dic 5 android android-manifest android-intent
两者有什么区别:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME"/>
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
和:
<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>
Run Code Online (Sandbox Code Playgroud)
在这里查看答案
android.intent.action.MAIN 的含义是什么?
android.intent.action.MAIN意味着这个activity是应用程序的入口点,即当你启动应用程序时,这个activity就被创建了。
来自文档
ACTION_MAIN with category CATEGORY_HOME -- Launch the home screen.
Run Code Online (Sandbox Code Playgroud)
另外,从这里开始
Activity Action Start 作为主入口点,不期望接收数据。
android.intent.category.DEFAULT主要用于隐式意图。如果您的活动希望通过隐式意图启动,则应在其过滤器中包含此类别。如果您的 Activity 在没有分配特定类别时可能由隐式 Intent 启动,则其 Intent 过滤器应包含此类别。
请参阅文档..
以及 @CommonsWare 的另一种观点......在那个答案中也......看到它
因此,这ACTION_MAIN被认为是应用程序的入口点。
通常,它与CATEGORY_LAUNCHERin组合<intent-filter>以指示应出现在主屏幕启动器或任何其他自认为是启动器的活动中。此类“启动器”可以查询PackageManager、使用queryIntentActivities()、 来查找此类活动并将其显示给用户。
但是,ACTION_MAIN可以与其他类别组合用于其他特殊目的。例如,CATEGORY_CAR_DOCKwithACTION_MAIN表示当用户将手机放入制造商提供的汽车底座时,应将其视为要显示的候选活动。
当 an 与Intent一起使用时startActivity(),如果Intent尚未放入类别中,则将其放入 中CATEGORY_DEFAULT。因此, an<activity> <intent-filter>需要指定some <category>,如果没有别的的话使用<category android:name="android.intent.category.DEFAULT" />。