四、Android App Manifest(清单)--Android Api 中文翻译(一)
来源:互联网 发布:我的世界ip地址和端口 编辑:程序博客网 时间:2024/05/22 18:12
每一个安卓应用在他的根目录必须有一个AndroidManifest.xml的文件。这个文件给Android系统提供了必要的信息,在运行任何代码前必须通知系统必须有这个文件。除此之外,清单文件还有以下作用:
- 它命名了应用程序的包名,包名作为应用程序的惟一标识符。
- 它描述了应用程序的组件 - 活动、服务、广播、内容提供者。这些组件组成了一个应用。他为继承自各个组件的类命名,并且声明它们的功能(例如,他们能够处理哪个意图)。这些声明让Android系统知道有那些组件和它们启动的条件。
- 它决定应用程序组件使用那些进程
- 它声明必须拥有的哪些应用程序权限,使用这些权限去访问受保护的api和其他应用程序交互。
- 它也声明了其他程序和自身的应用程序组件进行交互的必需权限
- 它列举了Instrumentation类,这个类提供分析和随着应用程序正在执行的其他信息。这些声明只会出现在开发和测试的清单文件中,当程序发布的时候,它们就会被删除
- 它声明了程序必需的最低的Android api版本
- 它列举了所以和应用程序相关的链接库
- 清单文件结构
下面的图表显示了清单文件的基本结构,清单文件可以包含任何其中的一些子元素。这些子元素连同它自己的一些属性,都被定义在一个单独的文件中。在这个图表后面的字母表文件中,点击图中的元素名称,可以查看任何元素的详细信息。
<?xml version="1.0" encoding="utf-8"?><manifest> <uses-permission /> <permission /> <permission-tree /> <permission-group /> <instrumentation /> <uses-sdk /> <uses-configuration /> <uses-feature /> <supports-screens /> <compatible-screens /> <supports-gl-texture /> <application> <activity> <intent-filter> <action /> <category /> <data /> </intent-filter> <meta-data /> </activity> <activity-alias> <intent-filter> . . . </intent-filter> <meta-data /> </activity-alias> <service> <intent-filter> . . . </intent-filter> <meta-data/> </service> <receiver> <intent-filter> . . . </intent-filter> <meta-data /> </receiver> <provider> <grant-uri-permission /> <meta-data /> <path-permission /> </provider> <uses-library /> </application></manifest>
所有的按字母顺序排列的元素可以出现在下面列出清单文件中。这些是唯一合法的元素;你不能添加自己的元素或属性。
<action><activity><activity-alias><application><category><data><grant-uri-permission><instrumentation><intent-filter><manifest><meta-data><permission><permission-group><permission-tree><provider><receiver><service><supports-screens><uses-configuration><uses-feature><uses-library><uses-permission><uses-sdk>
- 文件约定
这些约定和规则通常适用于所有清单中的元素和属性:
元素
仅仅只有和元素是被需要的,他们必须出现并且只能出现一次。其他的可以多次出现或者不出现 - 虽然它们有些会出现在清单文件中去完成一些有意思的事情。
属性
从意义上来说,所有的属性都是可选的。然而,有一些必须指定一个元素来完成它们的目的。使用文档作为指南。对于有些真实的可选属性,它提供一个默认值和在缺少规范的情况下改变它的状态。
除了在文件下的属性,其他的属性必须都有一个android:的前缀-例如,android:alwaysRetainTaskState。因为前缀是通用的,文档通常省略了它指属性的名字。
声明类名
许多元素对应于Java对象,包括元素应用程序本身(元素)和它的主要组件-活动(),服务(),广播接收器(),和内容提供者()。
如果你定义了组件(Activity,Service,BroadcastReceiver,ContentProvider)的一个子类,它通过一个name的属性来声明,这个name必须包含整个包名称。例如,一个service的子类可以像下面这样定义:
<manifest . . . > <application . . . > <service android:name="com.example.project.SecretService" . . . > . . . </service> . . . </application></manifest>
如果在<manifest>属性中定义了包名,name名字前面的包名称就可以省略。下面这样的定义和上面是一样的。
<manifest package="com.example.project" . . . > <application . . . > <service android:name=".SecretService" . . . > . . . </service> . . . </application></manifest>
当启动一个组件的时候,Android创建一个组件的子类,如果子类没有被指定,他将会创建一个基础类的实例。
多值
如果需要指定多个值,这些值几乎都是相同的,可以在一个元素内列举多个值。比如,一个意图过滤器可以添加多个动作:
<intent-filter . . . > <action android:name="android.intent.action.EDIT" /> <action android:name="android.intent.action.INSERT" /> <action android:name="android.intent.action.DELETE" /> . . .</intent-filter>
资源数值
一些属性必须有显示给用户的一些值-例如,一个活动的一个标签和一个图标。这些属性的值应该被本地化,通过一个资源或者主题来设置它们。
资源是用以下格式表示的值,
@[package:]type:name
如果资源和应用程序有相同的包,包的属性可以省略。type是一个资源的类型-像字符串和图片-指定一个特定的名字来识别资源。例如
<activity android:icon="@drawable/smallPic" . . . >
使用主题是用一个相似的表达式,?[package:]type:name
字符串
当一个属性值是字符串的时候,必须用到双斜杠的转义字符-例如,”\n”代表一个换行,”\uxxxx”代表unicode编码。
- 文件特性
以下部分描述一些Android的特性是如何映射在清单文件中。
意图过滤器
应用程序的核心组件(activities,services和broadcast receiver)都是由一个意图所启动。一个意图是(一个意图对象)描述所需的行动的信息,包含数据去采取行动。组件的category会执行这个行动和其他相关的信息。如果需要启动一个新的组件实例的话,Android提供了适应的组件来回应意图,并且通过意图对象来传输。
组件声明了它们的功能-他们可以回应的意图组件的类型-通过意图过滤器,因为Android系统在启动一个组件之前。必须了解这个组件能够处理哪些意图。意图过滤器是在清单文件中用元素定义。一个组件可以有很多的过滤器,每一个都代表了不同的功能。
一个有明显标签的组件意图会直接激活,这个过滤器将不会起作用。如果一个组件没有明显的意图标签,那么他就只能通过意图过滤器来启动。
更多关于意图过滤器的知识,请查看意图过滤器的文档
图标和标签
若干的组件都有一个小的图标和文字标签来显示给用户。有一些可以在显示的屏幕可能还会有一个详细的描述。例如,
(正在翻译中。。。)
0 0
- 四、Android App Manifest(清单)--Android Api 中文翻译(一)
- Android API Guides---App Manifest
- android-app manifest(5) - API 23
- Android API Guides---App Manifest <activity>
- Android API Guides---App Manifest Attribute
- Android API Guides---App Manifest <application>
- Android API Guides---App Manifest <provider>
- Android API Guides---APP Manifest <receiver> <service>
- Android API Guides---App Manifest <uses-feature>
- Android API Guides---APP Manifest <uses-library>
- Android API Guides 之 App Manifest(12) - <manifest>
- Android API Guides---App Manifest <manifest> <meta-data> <path-permission>
- Android清单文件详解(一) ---- 一切从<manifest>开始
- Android清单文件详解(一) ---- 一切从<manifest>开始
- APP Manifest -Android
- Android-App manifest-allowTaskReparenting
- Android之App Manifest
- android-App Manifest
- zookeeper、zkui、kafka部署技术
- UITableView 相关属性的设置
- 中断处理的 tasklet 机制
- Jsoup +JavaScript 扒取网站模板 bootstarp
- PLSQL Developer连接远程oracle配置
- 四、Android App Manifest(清单)--Android Api 中文翻译(一)
- 初学memcached
- [从头学数学] 第166节 [机器小伟]的结丹期修炼规划
- pat--一元多项式的乘法与加法
- sdut 2413 字符加密
- C++ 如何判断姓名字符串符合百家姓
- 自定义MySildingMenu
- 心态
- activiti自定义流程之自定义表单(二):创建表单