Android学习笔记3——Android的Manifest文件介绍

来源:互联网 发布:u盘数据恢复免费软件 编辑:程序博客网 时间:2024/09/21 08:44

在Android能够启动一个app组件之前,android系统必须通过读取manifest文件来知道这个组件的存在,你的app必须在这个文件中定义所有的组件,并且这个文件必须包含在app根目录下。

在manifest文件中为了定义这个app的组件需要做一些事情,例如:

1、定义这个app所要求的权限,例如访问网络或者是读取联系人的权限;

2、定义这个app所需要的最小API level;

3、定义这个app所需的硬件和软件的特性,例如照相机,蓝牙服务,或者多点触屏;

4、这个app需要的API库,例如Google Maps library.

定义组件

这个manifest文件最主要的任务是通知这个系统这个app的全部组件,例如:

<?xml version="1.0" encoding="utf-8"?><manifest ... >    <application android:icon="@drawable/app_icon.png" ... >        <activity android:name="com.example.project.ExampleActivity"                  android:label="@string/example_label" ... >        </activity>        ...    </application></manifest>
在application这个元素中android:icon属性指定了这个应用图标的路径,acitivity这个元素中android:name指定了这个activity的类名称和android:lable属性指定了这个activity的标题。用这种方式可以定义service receiver provider,而那些没有定义在manifest文件中的组件对系统是不可见的,不被运行。然而broadcast reiceiver 既能够被定义在manifest文件中,也可以动态通过registerReceiver在代码中注册。

如何定义组件的功能呢?

正如前面所描述的,我们可以通过Intent来启动Activity、Services和broadCast receiver,我们能够把要启动的目标组件封装到Intent中来达到启动特定组件的目的。然而,Intents的真正的作用在于Intent的概念上。一个模糊不清的INtent的仅仅描述了要进行的行为类型,让系统可以找到能够实现定义行为并启动它,如果都有多个组件能够实现所定义的行为,系统就会让用户选择一种。

系统这种识别出能够相应所定义Intent的组件的方法是把所接收到的Intent和设备中所有app的manifest文件中所定义的Intent filter做比较。

当你在你的app的manifest文件中定义一个activity时,你必须包含能够定义这个activity功能的intent filter以至于它能够相应其他app的Intent。你能为你的组件定义一个intent filer 通过想这个组件的定义元素中增加一个Intent filer子元素。例如

<manifest ... >    ...    <application ... >        <activity android:name="com.example.project.ComposeEmailActivity">            <intent-filter>                <action android:name="android.intent.action.SEND" />                <data android:type="*/*" />                <category android:name="android.intent.category.DEFAULT" />            </intent-filter>        </activity>    </application></manifest>
定义app的要求:

拥有android系统的各种各样的设备上,并不是所有的都拥有同样的特性和功能。为了防止你的app安装在你的app不支持的设备上,在你的app的manifest文件中明确清晰的定义出你的app支持的设备类型和软件要求是非常重要的,这些定义的信息大部分系统是不会读取他们的,只是外部服务例如Google PLay去读取他们为了当用户为他们的设备搜索app时提供过滤。

例如。如果你的app需要照相功能并且需要在android2.1才会才会拥有的api,你应该在你的manifest文件中如此定义。

<manifest ... >    <uses-feature android:name="android.hardware.camera.any"                  android:required="true" />    <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="19" />    ...</manifest>
这样如果一个设备上没有照相功能,或者系统版本低于2.1,则这个设备就不会从Google Play中安装你的app.




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 教师被投诉打学生怎么办 遇到内向的学生教师应该怎么办 教师遇到顽劣的学生怎么办 家长质疑老师的能力怎么办 和领导有冲突该怎么办 孩子叫也不听特别叛逆怎么办 孩子叛逆期不听妈妈的话怎么办 学生和老师反嘴怎么办? 两个月的宝宝不拉屎怎么办 老师受家长的气怎么办 家长故意在班级群里气老师怎么办 幼儿园阿姨体罚孩子家长该怎么办 学生钱丢了老师怎么办 胸肌一边大一边小怎么办 被爱的人抛弃了怎么办 深蹲以后腿疼怎么办 做完蹲起大腿疼怎么办 练腿之后腿疼怎么办 深蹲做完后腿疼怎么办 做完上下蹲腿疼怎么办 钓鱼子线长了怎么办 烤箱烤红薯没有锡纸怎么办 烤箱烤羊肉串滴油怎么办 黄金虎嘴脱臼了怎么办 孕妇吃了马头鱼怎么办 慈鲷鱼生完小鱼怎么办 买的烤鱼片刺多怎么办 鸡蛋不太新鲜了怎么办 麻雀从巢里掉下来怎么办 小鱼生了鱼蛋怎么办 吃了没熟透的鱼怎么办 吃了变质的虾怎么办 吃了不新鲜的肉怎么办 吃不新鲜的虾怎么办 鸡胸肉不新鲜了怎么办 吃了不新鲜的鱼怎么办 生的猪肉有点臭怎么办? 猪肉馅不新鲜了怎么办 买的肉有点臭了怎么办 炸的东西不脆了怎么办 油炸东西回软了怎么办