1,关于action.Main 和 category.Launcher .只有这两者同时出现在一个Activity时,才会在应用程序列表里出现启动图标,如果一个application里有多个Activity同时包含main和launcher,那就会生成多个图标,点击分别启动对应的Activity。
我猜想:应用程序列表也是一个应用,当设备新安装了一个应用后,它会去看那个新装的程序的配置文件,找出包含launcher,并且有main的Activity,作为这个程序的一个入口,若有多个,那就有多个入口。我测试过,有launcher,没有main,但自定义一个action,name随便取,这样子也不会在程序列表里生成图标,但在其他程序中通过Intent setClassName或者setComponentName这种显示的方式调用,则可以成功。因为配置了action意味着该Activity被共享了出来,可以跨进程调用。
如果implicit调用,系统默认会为Intent添加category为default,所以,要共享的Activity希望被隐式调用到,除了配置action,data外,还必须设置category为default。