栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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的时候就把原生的

注释掉了,自己写一个Setting加上这个属性,这样在主界面就可以点击图标启动自定义的Setting

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

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/572445.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号