android.intent.action.MAIN与android.intent.category

最近对这个东西的作用有点兴趣,于是在网上搜索了一下,有一篇被转载了N遍的文章是这样说的:

一个应用程序可以有多个Activity,每个Activity是同级别的,那么在启动程序时,最先启动哪个Activity呢?有些程序可能需要显示在程序列表里,有些不需要。怎么定义呢?android.intent.action.MAIN决定应用程序最先启动的Activity android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里

这个听上去挺有道理的,一开始我也被忽悠了。

然而实际上,这个是错的。

 

进过实验得出的结论:

去掉了android.intent.category.LAUNCHER,图标仍然在程序列表里

一个程序可以加很多的android.intent.action.MAIN

 

所以个人认为正确的说法是

android.intent.category.LAUNCHER 决定了点击程序列表的图标所启动的Activity

而android.intent.action.MAIN决定该Activity是否能被直接从外部调用(猜想)

 

各位可以自己去实验。同时欢迎各位对我的猜想进行指正。

我现在很想做一个注释评论系统,用于指出错误。网络上文章的错误实在是太多了。

3 thoughts to “android.intent.action.MAIN与android.intent.category”

  1. 看不到你的说明,我还真不会亲自去试试!
    我测试的结果是,如果一个应用没有LAUNCHER则该apk仍能安装到设备上,但是在主程序图中看不到。如果给那个Activity 设定了LAUNCHER,且同时设定了Main,则这个Activity就可出现在程序图中;如果没有Main,则不知启动哪个Activity,故也不会有图标出现。可见,Main指的是,点击图标后启动哪个Activity。当然,Main可以给多个Activity设定,但只设定Main不设定LAUNCHER,仍然无法进入activity。可见,Main和LAUNCHER同时设定才有意义,如果多个activity同时设定,则会出现两个图标,分别先进入不同的activity.

  2. 恩 1楼哥们 我也做了实验 和你得到同样的结果 楼主说的“去掉了android.intent.category.LAUNCHER,图标仍然在程序列表里”应该是他上次安装时留下的,

发表评论

电子邮件地址不会被公开。 必填项已用*标注