android.intent.action.MAIN是什么意思?

Ger*_*ero 71 android android-intent android-activity

我见过很多不同的令人困惑的言论.

<intent-filter>
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)

的意义是什么

<action android:name="android.intent.action.MAIN" />
Run Code Online (Sandbox Code Playgroud)

 <category android:name="android.intent.category.LAUNCHER" />
Run Code Online (Sandbox Code Playgroud)

 <category android:name="android.intent.category.DEFAULT" />
Run Code Online (Sandbox Code Playgroud)

Com*_*are 83

ACTION_MAIN被视为申请的入口点.通常,它与CATEGORY_LAUNCHERa 结合<intent-filter>以指示应该出现在主屏幕的启动器中的活动,或者在其他任何认为自己是启动器的活动中.这样的"发射器"可以查询PackageManager,使用queryIntentActivities(),找到这样的活动并将它们显示给用户.

但是,ACTION_MAIN可以与其他类别结合使用以用于其他专门用途.例如,CATEGORY_CAR_DOCKwith ACTION_MAIN表示当用户将手机放入制造商提供的汽车底座时应被视为候选者的活动.

当a Intent使用时startActivity(),如果Intent尚未将其放入类别中,则将其放入CATEGORY_DEFAULT.因此,<activity> <intent-filter>需要指定一些 <category>,<category android:name="android.intent.category.DEFAULT" />如果没有别的话.

  • @feresr:不,他们不是.你可以通过阅读答案来解释,包括第二段,它提供了一个*不同*使用`ACTION_MAIN`的例子,它*不涉及主屏幕式启动器. (9认同)
  • 嗯,你还没有解释为什么我们需要两者.我的意思是,ACTION MAIN = ENTRY POINT,得到了它.CATEGORY_LAUCHER =表示活动应该出现在主屏幕的启动器中.这两个句子是相同的,只是措辞不同,不是吗? (5认同)
  • @ vgokul129:因为主屏幕启动器专门寻找具有`<intent-filter>`同时具有`<action android:name ="android.intent.action.MAIN"/>`和`<category android:name =的活动"android.intent.category.LAUNCHER"/>`. (2认同)
  • @ vgokul129:"准确地说,在启动器上点击图标时,没有startActivity(intent)应该调用" - 只有当您使用自己的启动器编写自己的主屏幕时才会提供此类功能.主屏幕启动器的行为取决于该主屏幕的实现者.大多数人专注于开始广告宣传活动,因为这是发射器的主要作用.欢迎您有一个立即调用`finish()`的活动,但用户会认为您的应用已损坏. (2认同)

Lal*_*Lal 64

android.intent.action.MAIN 表示此活动是应用程序的入口点,即启动应用程序时,将创建此活动.

来自文档

ACTION_MAIN with category CATEGORY_HOME -- Launch the home screen.
Run Code Online (Sandbox Code Playgroud)

另外,从这里开始

活动操作作为主要入口点开始,不期望接收数据.

android.intent.category.DEFAULT主要用于隐式意图.如果您的活动希望通过隐式意图启动,则应在其过滤器中包含此catetory.如果您的Activity可能在没有为其分配特定类别时由隐式Intent启动,则其Intent过滤器应包含此类别.

android.intent.category.LAUNCHER

category - 提供有关要执行的操作的其他信息.

CATEGORY_LAUNCHER 意味着它应该作为顶级应用程序出现在Launcher中

查看文档..

  1. http://developer.android.com/reference/android/content/Intent.html
  2. http://developer.android.com/guide/topics/manifest/action-element.html

  • 不,"MAIN"*单独*不会"开始活动回家".`MAIN'有很多用途. (3认同)