标签归档:xml

AndroidManifest.xml文件详解(compatible-screen)

语法(SYNTAX):

<compatible-screens>
<screenandroid:screenSize=[“small” | “normal” | “large” | “xlarge”]
android:screenDensity=[“ldpi” | “mdpi” | “hdpi” | “xhdpi”] />

</compatible-screens>

包含于(CONTAINED IN):

<manifest>

说明(DESCRIPTION)):

这个元素用于指定那些屏幕配置跟应用程序是兼容的。在应用的清单中只允许有一个<compatible-screent>元素的实例,但是它能够包含多个<screen>元素。每个<screen>元素指定一个特定的跟应用程序兼容的尺寸—密度组合。

Android系统不会读取<compatible-screen>清单元素(无论是在安装的时候,还是在运行的时候)。这个元素的信息只能被外部服务使用(如Google read more

Android Intents和Intent过滤器(二)

Intent对象解析

Intent能够被分成两组:

1.   用组件的名称把Intent对象明确的指向目标组件(在Intent对象的组件名字段指定目标组件名)。因为一般情况下其他应用的开发者不会了解目标组件的名字,所以通常针对应用程序的内部消息使用明确命名的Intent对象,如一个Activity启动一个下属服务或启动一个姊妹Activity。

2.   没有命名目标(Intent对象的组件名字段是空的)的隐式的Intent对象。隐式的Intent对象经常被用于激活其他应用程序中的组件。

Android系统把一个明确命名的Intent对象发送给目标类的一个实例。除了组件名以外,不再用Intent对象内任何其他信息来判断哪个组件应该获得这个Intent对象。

对于隐式的Intent对象,需要不同的分类。在缺少目标组件的情况下,Android系统必须查找最适合的组件(一个能够执行请求动作的Activity或Service,或者是一组能够响应广播通知的Broadcast read more

AndroidManifest.xml文件详解(category)

语法(SYNTAX):

<categoryandroid:name=”string“/>

包含于(CONTAINED IN):

<intent-filter>

说明(DESCRIPTION):

给一个过滤器添加一个分类的名称。有关Intent过滤器的详细说明以及过滤器中分类规范的作用,请看Intent and Intent Filters(http://www.13com.net/site/?p=128)

属性(ATTRIBUTES):

android:name

定义分类的名称。标准的分类是在Intent类中用CATEGORY_name常量来定义的。在定义这个属性值的时候,要用“andoid.intent.category.”来代替GATEGORY_,从而实现定义与常量的关联。例如:Intent类中的常量CATEGORY_LAUNCHER,在过滤器分类中的定义是:android.intent.category.LAUNCHER。

read more

AndroidManifest.xml文件详解(application)

语法(SYNATX):

<applicationandroid:allowTaskReparenting=["true" | "false"]
android:backupAgent="string"
android:debuggable=["true" | "false"]
android:description="string resource"
android:enabled=["true" | "false"]
android:hasCode=["true" | "false"]
android:hardwareAccelerated=["true" | "false"]
android:icon="drawable resource"
android:killAfterRestore=["true" | "false"]
android:label="string resource"
android:logo="drawable resource"
android:manageSpaceActivity="string"
android:name="string"
android:permission="string"
android:persistent=["true"
read more

AndroidManifest.xml文件详解(activity-alias)

语法(SYNTAX):

<activity-aliasandroid:enabled=["true" | "false"]
 android:exported=["true" | "false"]
 android:icon="drawable resource"
 android:label="string resource"
 android:name="string"
 android:permission="string"
 android:targetActivity="string">
 . . .
</activity-alias>

被包含于(CONTAINED IN):

<application>

能够包含的元素(CAN CONTAIN):

<intent-filter>

<meta-data>

说明(DESCRIPTION):

这个元素用于给targetActivity属性所指定Activity设定一个别名,目标Activity必须跟别名Activity在同一个应用程序中,并且这个Activity必须在别名之前被声明。

read more

AndroidManifest.xml文件详解(activity)(一)

<activityandroid:allowTaskReparenting=["true" | "false"]
 android:alwaysRetainTaskState=["true" | "false"]
 android:clearTaskOnLaunch=["true" | "false"]
 android:configChanges=["mcc", "mnc", "locale",
 "touchscreen", "keyboard", "keyboardHidden",
 "navigation", "screenLayout", "fontScale", "uiMode",
 "orientation", "screenSize", "smallestScreenSize"]
 android:enabled=["true" | "false"]
 android:excludeFromRecents=["true" | "false"]
 android:exported=["true" | "false"]
 android:finishOnTaskLaunch=["true"
read more

AndroidManifest.xml文件详解(action)

语法(SYNATX):

&lt;actionandroid:name="<em>string</em>"/&gt;

包含于(CONTAINED IN):

<intent-filter>

说明(DESCRIPTION):

给Intent过滤器添加一个操作。一个<intent-filter>元素必须包含一个或多个<action>元素,如果一个也没有包含,那么就不会有Intent对象通过过滤器。

属性(ATTRIBUTES):

android:name

read more

AndroidManifest.xml文件详解(二)

文件约定

某些约定和规则普遍适用于清单中的所有元素和属性:

元素

只用<manifest>和<application>元素时必须的,而且这两个元素在文件中只能出现一次。其他元素则可以多次出现在清单中,或者根本就不出现—但是为了构建一个有意义的清单,必须要在清单中声明某些元素。

一个元素所包含的任何声明,包括它所包含的其他元素,所有的值都是通过属性来设置的,而不是用夹在开闭元素之间的字符数据。

相同级别的元素通常是没有顺序的。例如,<activity>、<provider>、<service>元素可以是任意顺序的。(<activity-alias>元素是个例外,它必须放在它所代表的<activity>元素的后面。)

属性

在正式的含义中,所有的属性都是可选的,但是,为了达成目的,必须要给元素指定一些属性。对于真正的可选属性,会指定发生在特殊情况下的默认值或状态。

除了<manifest>根元素的一些属性之外,其他所有属性的命名都带有android:前缀—例如,android:alwaysRetainTaskState。因为这个前缀是通用的,所以本文档在提到属性名时,通常会忽略这个前缀。

声明类名称

许多元素都对应着Java对象,包括代表应用程序自己的元素<application>,以及基本的组件—<activity>、<service>、<receiver>、<provider>等。

如果要定义子类,那么这些子类几乎总是继承以下组件类:Activity、Service、BroadcastReceiver、ContentProvider。子类是通过name属性来声明的。这个名称必须是完整Java包名。例如,下例演示了Service子类的声明方法:

<manifest . . . >
    <application . . . >
        <service android:name="com.example.project.SecretService" . . . >
            . . .
        </service>
        . . .
    </application>
</manifest>

但是,也可以使用简略的表达方式,用”.”符号做为name属性值的第一个字符。在Android系统解析是会在”.”符号前追加包名(包名是在<manifest>元素的package属性中声明的)。下例的声明方法与上例的结果相同:

<manifest package="com.example.project" . . . >
    <application . . . >
        <service android:name=".SecretService" . . . >
            . . .
        </service>
        . . .
    </application>
</manifest>

在启动组件时,Android会创建这个命名子类的一个实例对象。如果没有指定子类,那么就会创建一个基类的实例对象。

多个值的设定

如果要给一个元素指定多个值,那么几乎总是重复使用这个元素,而不是在一个元素中列出多个值。如:

<intent-filter . . . >
    <actionandroid:name="android.intent.action.EDIT"/>
    <actionandroid:name="android.intent.action.INSERT"/>
 
read more

AndroidManifest.xml文件详解(一)

每个应用程序在它的根目录中都必须要有一个AndroidManifest.xml文件。这个清单把应用程序的基本信息提交给Android系统,在应用程序的代码能够运行之前,这个信息系统必须建立。以下是清单文件要做的一些事情:

1. 用Java包给应用程序命名。这个包名是应用程序的唯一标识;

2. 描述应用程序的组件—组成应用程序的Activity、Service、Broadcast Receiver以及Content Provider。它要用每个组件的实现类来命名,并向外发布对应组件功能(例如,组件所能处理的Intent消息)。这些声明会让Android系统了解应用程序中组件,以及这些组件被加载的条件。

3. 判断哪些进程是主应用程序组件。

4. 声明应用程序所必须的权限,以便能够访问被保护的API,以及能够跟其他应用程序进行交互。

5. 为了跟应用程序组件进行交互,还声明了其他要求有的权限。

6. 列出了能够提供应用程序运行时的分析和其他信息的Instrumentation类。只有在开发和测试应用程序时才在清单文件中声明这些类,在应用程序被发布之前,要删除这些类。

7. 声明应用程序所要求的最小的Android API级别。

8. 列出应用程序必须链接的外部库。

Manifest文件的结构

下图中包含了清单文件的一般性结构,并且包含所有能包含的元素。每个元素所带有的全部元素会在它们各自的文档中介绍。

<?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/>
read more