在Android基于组件的应用设计架构中,配置文件是一个很重要的元素。它将应用所包含的组件、各组件的能力和配置以及应用环境介绍给Android框架层的各个服务,让Android知道如何去调度应用中的各个组件。Android的配置文件就像一本书的目录,它会告诉我们里面有什么内容。

一、权限设置

应用通过配置文件声明其所需权限,以访问其应用或系统中的受限资源。这些权限声明会在应用安装时告知用户,用户可以根据这些信息决定是否要安装该应用。

添加权限,如

    <!-- 添加读取联系人记录的权限 -->
<uses-permission android:name="android.permission.READ_CONTACTS" />

如果开发者需要定义权限来限制第三方应用的访问,则可以通过<permission>配置项来进行定义,在上次的广播组件中有过一次应用,不知道大家还记得否。

    <permission
android:name="com.example.test"
android:label="权限的名字"
android:description="权限的具体描述"
android:permissionGroup="android.permission-group.COST_MONEY"
android:protectionLevel="normal">
</permission>

定义了的权限还需要部署到对应的组件上才能生效。组件管理系统在构造一个组件对象时,会检验请求组件的权限声明是否与该组件的权限配置相匹配,如果匹配失败,会抛出异常阻止这次调用。

二、环境配置

每个应用都会有它所依赖的软硬件环境。有点应用实现会依赖特定版本的SDK,而有的应用则需要一些特定硬件的支持。应用所依赖的软硬件信息,都需要在配置文件的环境配置部分声明。

使用配置项<uses-sdk>,可以声明应用所依赖的SDK版本信息。而<users-feature>配置项,则用于声明应用所依赖的外设或Android的特色功能。比如,一款主打拍照功能的应用需要声明所安装设备要有相机

<uses-feature android:name="android.hardware.camera"/>

此外,<uses-configuration>配置项,用于描述应用所需的输入设备配置;<supports-screens>配置项,用于声明应用所依赖的屏幕设置。对输入或显示有特殊需求的应用,都需要声明这些配置项。

三、应用和组件配置

配置文件的核心部分就是对应用及其各组件的特征的描述。应用中的各个组件都会有其调用和运行的需求,在配置文件中需要对这些信息进行描述,帮助Android系统服务知晓如何调度这些组件。配置文件对组件的描述,主要包括几个方面。

(1)基本信息描述
每个组件都会有一些最基本的配置信息,包括该组件对应的实现类名name、组件名字label、组件图标icon等。

(2)接口描述
每个组件的功能都是在配置文件中进行描述的。界面组件,服务组件和广播组件都是通过Android的Intent进行连接的每个组件的配置信息中,都可以放置若干个<intent-filter>项,表达该组件可以处理的Intent对象。

(3)运行模型描述
在默认情况下,各个组件都会运行与应用的主线程中;在一些特殊情况下,需要将某些组件放在特定的进程中执行,可以通过process项来设置。

(4)权限描述
通过组件的permission参数进行设置。

(5)元数据描述
任意存放键值对信息,主要用于告知系统为组件附加一些系统功能。比如,如果想为组件绑定特定的搜索模块,就可以通过<meta-data>进行配置。

(6)可用性描述
某些参数在应用安装后会处于不可用的状态。这就需要通过组件配置中的enable参数进行设置。而某些组件仅能被应用本身使用,就需要将exported参数设为false。

除此以外,还有<uses-library>,用于声明应用需要链接的附加类库。

额,这篇算是组件部分的附加篇吧,让大家了解如何在配置文件中注册组件以及其他信息。

参考文章:AndroidManifest.xml配置文件详解  http://blog.chinaunix.net/uid-9185047-id-3460344.html

========================================

作者:cpacm

地址:http://www.cnblogs.com/cpacm/p/3935268.html

最新文章

  1. Properties类读取配置文件
  2. BZOJ 4547: Hdu5171 小奇的集合
  3. POJ 3254 Corn Fields(状态压缩DP)
  4. ThinkPHP中的视图
  5. asp.net网页中上传并且浏览pdf文件的实现
  6. php返回json数据函数实例
  7. Mina学习之IoSession
  8. Hadoop之——HBase注意事项
  9. windows7 安装pytorch
  10. Python3 与 NetCore 基础语法对比(就当Python和C#基础的普及吧)
  11. ALLOT流控设备操作手册指引
  12. springcloud学习笔记
  13. [Kubernetes]CentOS7下Etcd集群搭建
  14. eclipse 报错Version 1.6.0_45 of the JVM is not suitable for this product. Version:1.7 or greater is required
  15. url 中非法字符替换,java 正则替换
  16. hadoop在CentOS下的安装配置
  17. html中&lt;meta&gt;标签
  18. IIS发布站点错误收集
  19. java基础----&gt;数组的基础使用(一)
  20. python 实现简单点名程序

热门文章

  1. sql常用函数instr()和substr()
  2. css3 媒体查询的学习。
  3. TFS 2015服务端安装与客户端签入项目步骤
  4. Redis数据库 : python与java操作redis
  5. java多线程批量读取文件( 八)--读写分离
  6. centos安装Linux
  7. 单源次短路径:poj:3255-Roadblocks
  8. python基础之继承实现原理、子类调用父类的方法、封装
  9. 5,MongoDB 之 &quot;$&quot; 的奇妙用法
  10. CodeForces 771C Bear and Tree Jumps 树形DP