• 【Android开发日记】之入门篇(十)——Android应用配置文件解析


    在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

  • 相关阅读:
    表达式for loop
    用户输入
    字符编码
    变量字符编码
    Python安装
    Python 2 or 3?
    Python解释器
    2017中国大学生程序设计竞赛
    Educational Round 27
    Round #429 (Div.2)
  • 原文地址:https://www.cnblogs.com/cpacm/p/3935268.html
Copyright © 2020-2023  润新知