关于androidManifest.xml的概叙以及intent-filter的详细分析
AndroidManifest.xml配置文件对于Android应用开发来说是比较细但又很重要的基础知识,本文旨在总结该配置文件中常用到的几个属性,以便日后查阅,至于那些比较细的属性,主要是平时开发比较少用便不列举,如果自己有需要直接在eclipse中直接“alt+/”就好了……
下面是一个比较通用的AndroidManifest.xml文件样例(所建的工程目录是Test),
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.test"
android:versionCode="1"
android:versionName="1.0" > <!-- SDK版本的要求 -->
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="21" /> <!-- 获取系统相关的权限配置 如果不知道系统有多少属性,不用那么麻烦去搜,直接在name便签的双引号里alt+/就好,多直接~ -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <!-- 应用配置细节
icon是图标;
label是程序名称显示在titlebar中的
theme是整个程序的主题,这里是自己文件定义的主题,如果想用android的就是@android:style/Theme再加alt+/就可以随便选了
-->
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<!-- Activity配置 -->
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<data android:host="MainActivity"/>
</intent-filter>
</activity> <!-- Service配置 -->
<service >
<intent-filter >
<action />
<category />
<data />
</intent-filter>
</service> <!-- Receive配置 -->
<receiver >
<intent-filter />
<meta-data />
</receiver> <!-- Provider配置 -->
<provider >
<grant-uri-permission />
<meta-data />
<path-permission />
</provider> <!-- 程序需要的外部库 -->
<uses-library /> </application> </manifest>
纵观上面的各个系统组件配置,基本都有一个Intent-filter属性,来对系统中各种乱七八糟的intent进行过滤处理。因为android系统中会时时刻刻发送着各种消息各种intent,有些是系统发的有些是各个程序发的,怎么从那么多的消息中获取自己想要的?那就过滤,Intent-filter就是起这个作用。下面我们来详细问题一下这个Intent-filter的相关属性,虽然各个组件的Intent-filter有差别,但是了解大概后,基本都差不多,举一反三,触类旁通嘛。
Intent消息还包含有名称、动作、数据、类别几个重要属性,同时这几个点因过滤的标签的不同而有一些差别。
<action>标签用于描述具体消息的名称;
<category>标签用于表示能处理消息组件的类别;
<data>标签则用于描述消息需要处理的数据格式,支持使用正则表达式来限定数据来源;
例如以下是一个activity的intent-filter:
<intent-filter>
<action android:name="wytings msg" />
<category android:name="android.intent.category.DEFAULT" />
<data mimeType="*/*" />
</intent-filter>
只要系统中有程序发出的intent的action为wytings msg这个activity就可以收到。
category设置的是默认配置,一般category主要就是android.intent.category.DEFAULT和android.intent.category.LAUNCHER两个(前者是默认配置,看action怎么设置,就怎么启动,后者是代表的第一个启动的基本都得和<action android:name="android.intent.action.MAIN" />一起用),其他的看自己需求,要是还是不知道还是alt+/就好了。
data中设置了处理类型,意思就是消息我收到了,如果不是我处理的类型,我依然不干活。比如我们把上面的action设置为android.intent.action.SEND(意思是当我们点发送的时候,系统就会调用这个activity,还有个前提是发送的文件得是它支持的,这里是什么都文件类型都支持)
关于androidManifest.xml的概叙以及intent-filter的详细分析的更多相关文章
- 8.0后广播在AndroidManifest.xml中注册后发送intent接收不到广播
8.0后广播在AndroidManifest.xml中注册后发送intent是接收不到广播了,看了一下原因,好像是8.0为了管理系统和节约电量特别针对广播和服务发送intent的方式启动做出的改变,也 ...
- android-配置文件AndroidManifest.xml
AndroidManifest.xml 是每个android程序中必须的文件.它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实 ...
- 高通AR和友盟SDK的AndroidManifest.xml合并
高通AR和友盟SDK的AndroidManifest.xml合并 因为高通的AR在android中一开始就要启动,所有主Activity要设置为高通的Activity,即android:name=&q ...
- AndroidManifest.xml详解(上)
本文编辑整理自:http://blog.163.com/hero_213/blog/static/39891214201242835410742/ 一.关于AndroidManifest.xml ...
- AndroidManifest.xml的android:name是否带.的区别
android项目里面的AndroidManifest.xml,会有这样的定义 <activity android:name=".Main" ...
- AndroidManifest.xml中<activity></activity>相关属性说明
虽说,从事android开发有一定时间了,对于Activity大家也都不陌生,但是具体的对于Activity中相关属性的含义有必要做一个系统的总结: intent-filteraction: 来指定响 ...
- AndroidManifest.xml配置文件
AndroidManifest.xml启动文件 主activity: <activity android:name="com.example.android01.MainActivit ...
- Android学习笔记之AndroidManifest.xml文件解析(转)
//自已备注: <?xml version="1.0" encoding="utf-8"?>//说明了版本号,字符集 <manifest xm ...
- AndroidManifest.xml
一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它位于整个项目的根目录,描述了package中暴露的组件(activiti ...
随机推荐
- URAL-1987 Nested Segments 线段树简单区间覆盖
题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1987 题意:给定n条线段,每两条线段要么满足没有公共部分,要么包含.给出m个询问,求当前 ...
- SharePoint咨询师之路:设计之前的那些事二:规模
提示:本系列只是一个学习笔记系列,大部分内容都可以从微软官方网站找到,本人只是按照自己的学习路径来学习和呈现这些知识. 有些内容是自己的经验和积 累,如果有不当之处,请指正. 咨询师更多的时候是解决方 ...
- windows下揪出java程序占用cpu很高的线程 并找到问题代码 死循环线程代码
我的一个java程序偶尔会出现cpu占用很高的情况 一直不知道什么原因 今天终于抽时间解决了 系统是win2003 jvisualvm 和 jconsole貌似都只能看到总共占用的cpu 看不到每个线 ...
- TreeSet介绍
一.TreeSet原理: 1.TreeSet存储对象的时候, 可以排序, 但是需要指定排序的算法 2.Integer能排序(有默认顺序), String能排序(有默认顺序), 自定义的类存储的时候出现 ...
- Failed to load libGL.so in android
使用命令:find / -name libGL.so 得到: /usr/lib/i386-linux-gnu/libGL.so /usr/lib/i386-linux-gnu/mesa/libGL.s ...
- Ubuntu 14.04 LTS中怎样解决系统设置残缺的问题
iBus卸载之后,系统设置会缺失,是Ubuntu 14.04和iBus之间的关系引起的,但是如果直接安装 sudo apt-get install ubuntu-desktop 这个会把amazon广 ...
- POJ 2886Who Gets the Most Candies?(线段树)
POJ 2886 题目大意是说有n个人围成一圈,游戏的起点是k,每个人持有一个数字(非编号)num,每次当前的人退出圈,下一个人是他左边的第num个(也就是说下一个退出的是k+num, k可以为负数, ...
- HDU 5776 sum (前缀和)
题意:给定 n 个数,和 m,问你是不是存在连续的数和是m的倍数. 析:考虑前缀和,如果有两个前缀和取模m相等,那么就是相等的,一定要注意,如果取模为0,就是真的,不要忘记了,我当时就没记得.... ...
- OC:关于Itunes你了解多少?
在苹果电脑里有一个 iTunes 简单的说iTunes是苹果公司开发的一个应用程序,由苹果电脑在2001年1月10日于旧金山的 Macworld Expo 推出的一款数字媒体播放应用程序,用于播放以及 ...
- wikioi 1083 Cantor表
题目描述 Description 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 - 2/1 2/ ...