【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
【Android开发日记】之入门篇(十)——Android应用配置文件解析的更多相关文章
- 【Android开发日记】第一个任务Android Service!Service靴+重力感应器+弹出窗口+保持执行
前言: 近期在写一个小程序,需求是手机摇一摇就弹窗出来.第一次使用了Service,学习了两天,实现了Service弹窗,开机启动,Service启动和销毁,Service保持一直执行. 满足了自己的 ...
- 【Android开发日记】之入门篇(十二)——Android组件间的数据传输
组件我们有了,那么我们缺少一个组件之间传递信息的渠道.利用Intent做载体,这是一个王道的做法.还有呢,可以利用文件系统来做数据共享.也可以使用Application设置全局数据,利用组件来进行控制 ...
- 【Android开发日记】之入门篇(十四)——Button控件+自定义Button控件
好久不见,又是一个新的学期开始了,为什么我感觉好惆怅啊!这一周也发生了不少事情,节假日放了三天的假(好久没有这么悠闲过了),实习公司那边被组长半强制性的要求去解决一个后台登陆的问题,结果就是把 ...
- 【Android开发日记】之入门篇(七)——Android数据存储(上)
在讲解Android的数据源组件——ContentProvider之前我觉得很有必要先弄清楚Android的数据结构. 数据和程序是应用构成的两个核心要素,数据存储永远是应用开发中最重要的主题之一,也 ...
- 【Android开发日记】之入门篇(九)——Android四大组件之ContentProvider
数据源组件ContentProvider与其他组件不同,数据源组件并不包括特定的功能逻辑.它只是负责为应用提供数据访问的接口.Android内置的许多数据都是使用ContentProvider形式,供 ...
- 【Android开发日记】之入门篇(十三)——Android的控件解析
Android的控件都派生自android.view.View类,在android.widget包中定义了大量的系统控件供开发者使用,开发者也可以从View类及其子类中,派生出自定义的控件. 一.An ...
- 【Android开发日记】之入门篇(十一)——Android的Intent机制
继续我们的Android之路吧.今天我要介绍的是Android的Intent. 对于基于组件的应用开发而言,不仅需要构造和寻找符合需求的组件,更重要的是要将组件有机的连接起来,互联互通交换信息,才能够 ...
- 【Android开发日记】之入门篇(一)——开发环境的搭建
写给自己的话:至此,大学的时光已经剩下一年的时光,下一年等毕业设计结束后就算是正式地踏入社会.自己学android也不过几个月的时间,为了更好管理文档,写点东西记录下自己曾经做过的点点滴滴是一个不错的 ...
- 【Android开发日记】之入门篇(八)——Android数据存储(下)
废话不多说了,紧接着来讲数据库的操作吧.Come On! 提到数据存储问题,数据库是不得不提的.数据库是用来存储关系型数据的不二利器.Android为开发者提供了强大的数据库支持,可以用来轻松地构造基 ...
- 【Android开发日记】之入门篇(五)——Android四大组件之Service
这几天忙着驾校考试,连电脑都碰不到了,今天总算告一段落了~~Service作为Android的服务组件,默默地在后台为整个程序服务,辅助应用与系统中的其他组件或系统服务进行沟通.它跟Activity的 ...
随机推荐
- laravel-多条件查询并指定key输出
$room = DB::table('room') ->where(function($query) use($contList){ foreach ($contList as $k=>$ ...
- 线程、进程、协程和GIL(一)
参考链接:https://www.cnblogs.com/alex3714/articles/5230609.html https://www.cnblogs.com/work115/p/562027 ...
- R-描述性统计
RT...老实说这一章我是抖的...但是,加油- # 从1:100中均匀抽取size个数据,replace=TRUE指有放回抽样,数据可以重复 x = sample(1:100, size = 100 ...
- strak组件(3):URL别名的优化
将生成URL别名的功能进行解耦.效果和上一节的一样. 效果图: 新增函数 get_url_name(self, param) # 生成url别名,需要一个参数(list/add/edit/delete ...
- lan口和wan口的配置
路由器的一排网线接口,分为 lan 和 wan .但不是谁生来就是lan口 或者 wan口 . 也没有谁规定就一个wan口 就只有一个. 网口就是网口, 决定它是 lan口 还是 wan口 ,是由我们 ...
- 进入saftmode解决方案
Name node is in safe mode.The reported blocks 356 needs additional 2 blocks to reach the threshold 0 ...
- 生成heap dump
在查看内存泄露以及对内存问题中,要dump出当前内存堆存储快照,便于分析.有几种方法可以做,简介如下 一.intellij IDEA 由于我用的是intellij IDEA,所以没有介绍Eclipse ...
- Android 自定义圆形图片 CircleImageView
1.效果预览 1.1.布局中写自定义圆形图片的路径即可 1.2.然后看一看图片效果 1.3.原图是这样的 @mipmap/ic_launcher 2.使用过程 2.1.CircleImageView源 ...
- Android Url相关工具 通用类UrlUtil
1.整体分析 1.1.源代码查看,可以直接Copy. public class UrlUtil { public static boolean isUrlPrefix(String url) { re ...
- ImageButton的坑 ImageButton 有问题
最近在用ImageButton,发现,我如果new ImageButton,并且 设置Warp_content,但是它并不会正真的warp,它会有一个边框. 不知道怎么回事. 后来,在代码里面使用Im ...