Manifest 中多个android.intent.action.MAIN定义

在之前的经验一直以为Android Manifest中android.intent.action.MAIN用来标识这个app的主界面,每个Manifest只能配置一个,一直碰到的Manifest也确实如此。但是后来发现原生Setting的Manifest有很多个android.intent.action.MAIN,于是特意查了一下android.intent.action.MAIN的使用:一个程序可能有多个activity,那么在启动程序的时候最先启动哪个是由

action android:name="android.intent.action.MAIN"决定的

如果有多个activity配置了main属性,那么在隐式启动activity的时候要根据category,meta-data来判断启动哪个activity。 

android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里 也就是说配置了

category android:name="android.intent.category.LAUNCHER"的activity 会在点击了launcher上的应用图标后启动

如果有两个activity配置了,会在Launcher显示两个图标(这个没有尝试过,需要写个apk试一下)

比如某项目在拓展原生Setting的时候就把原生的

<!-- <category android:name="android.intent.category.LAUNCHER" /> -->注释掉了,自己写一个Setting加上这个属性,这样在主界面就可以点击图标启动自定义的Setting

另外为什么要加入android.intent.category.DEFAULT

如果通过隐式启动activity(也就是通过startActivity)的方式启动目标activity,在它的manifest没有加上面的标签会报错,是因为Android认为每个activity都需要有默认的category,如果manifest不写,会导致intent匹配失败

从上面的论述还可以获得以下信息:
1、一个 Intent 可以有多个 category,但至少会有一个,也是默认的一个 category。
2、只有 Intent 的所有 category 都匹配上,Activity 才会接收这个 Intent。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值