<action>
语法:
<action android:name="string"/>
父标签:
<intent-filter>
描述:
每个<intent-filter>标签都必须有一个或者更多的<action>标签, 如果没有的话, 就不会有符合该intent-filter的intent了.
属性:
android:name.唯一的属性, 表示action的名字, 在intent类中有些默认的action名字, 格式为”ACTION_string”. 而在action:name中则使用”android.intent.action.string”来对应intent中的action. 比如: intent参数中的ACTION_MAIN对应android:name的android.intent.actioin.MAIN,用ACTION_WEB_SEARCH对应android.intent.action.WEB_SERACH.对于自定义的action, 最好使用包名做前缀, 以防止重名, 比如一个叫TRANSMOGRIFY的action可以定义成这样:
<action android:name="com.example.project.TRANSMOGRIFY"/>
<activity-alias>
语法:
<activity-alias android: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>
父标签:
<application>
子标签:
<intent-filter>, <meta-data>
描述:
表示Activity的别名, 使用targetActivity属性命名. 目标必须在同一个application里, 并且必须声明在<activity-alias>前面. <activity-alias>标签对外呈现的是一个独立的<activity>,它拥有自己的<intent-filter>, 启动的方式跟原Activity是独立的. 比如如果在<activity-alias>中指定了"android.intent.action.MAIN"和"android.intent.category.LAUNCHER",那么即使原Activity没有指定这些<intent-filter>, 同样会在启动界面显示启动图标. 除了targetActivity之外,<activity-alias>的其它属性<activity>都包含, 在<activity-alias>中的属性, 将会使用<activity-alias>自己的值, 其余的属性将会复制<activity>中的值. 通常用来产生两个启动图标的时候使用.
属性:
android:enabled: 系统是否可以通过这个alias实例化activity.true表示可以, false表示不可以. 默认为true. <application>有自己的enabled属性, 必须两个同时为true才能通过该<activity-alias>启动activity.
android:exported: 其它APP是否可以通过该alias启动targetActivity.true表示可以, false表示不可以. 如果是false, 意味着只有同一个APP下的组件(或者同一个userID的APP下的组件)可以通过该alias启动targetActivity. 这个属性的默认值是动态的, 取决于该<activity-alias>是否包含<intent-filter>. 如果alias不包含任何intent-filter,意味着想要从这个alias启动activity只能通过intent指定明确的名称(显式), 这时候它只能通过APP内部调用, 所以这时候默认值是false. 如果包含intent-filter, 则意味着可以支持外部调用, 默认值为true.
android:icon: 指定通过alias启动activity的时候, 该activity的图标.
android:label: 指定通过alias启动activity的时候, 该activity的label.
android:name: 为alias指定唯一的名字, 这个名字应该看起来像一个类名, 但是跟activity不同, 它并不指向一个实际的类.
android:permission: 为该alias指定一个permission,任何企图通过该alias启动targetActivity的组件都必须拥有该权限才能启动该Activity. 如果设置了该属性, 它将取代targetActivity的任何permission, 如果未设置, 则意味着不需要任何权限使用该alias.
android:targetActivity: 指定目标Activity的名字, 该名字必须跟目标Activity的android:name一致, 并且该Activity必须在manifest中声明.
<category>:
语法:
<category android:name="string" />
父标签:
<intent-filter>
描述:
为intent filter指定一个category.
属性:
android:name: category的名字, 标准的category定义在Intent类中, 以”CATEGORY_name”这种模式提供. 如果希望接收一个隐式Intent,那么必须要在<intent-filter>中包含一个CATEGORY_DEFAULT, 因为通过startActivity()和startActivityForResult()发出的intent会自带一个CATEGORY_DEFAULT,如果没有这个则不能响应隐式Intent. 客户自定义的category应该使用包名作为前缀以防止重名.
<compatible-screens>
语法:
<compatible-screens>
<screen android:screenSize=["small" | "normal" | "large" | "xlarge"]
android:screenDensity=["ldpi" | "mdpi" | "hdpi" | "xhdpi"
| "280" | "360" | "420" | "480" | "560" ] />
...
</compatible-screens>
父标签:
<manifest>
描述:
指定APP对屏幕位置的兼容性. 每个manifest只能包含一个<compatible-screens>, 每个<compatible-screens>可以包含多个<screen>,每个<screen>指定了可以与APP兼容的屏幕尺寸和密度的组合.
Android本身并不去读取这个标签, 该标签只是提供信息用的, 某些外部的服务可能会用到这个标签(比如Google Play), 没有在该标签里出现的屏幕尺寸表示与该APP不能兼容.
通常情况下我们不应该使用这个标签, 使用这个标签会降低潜在的用户群体, 因为只要不在这个列表里的屏幕尺寸都是不被支持的. 使用了这个标签表示”绝对不能在某种屏幕尺寸下运行”. 在兼容多种屏幕尺寸的时候, 推荐这种方法.
如果我们想要声明APP可以支持的最小屏幕尺寸, 那么应该使用<support-screen>标签.
子标签:
<screen>: 指定一个APP可以兼容的屏幕尺寸配置, <compatible-screens>至少需要包含一个<screen>,<screen>必须包含android:screenSize和android:screenDensity属性. 如果只有一个属性的话, 那么它将会被忽略, 必须两种同时存在.
android:screenSize: 指定屏幕尺寸, 可以选择的值有:small, normal, large, xlarge.
android:screenDensity: 指定屏幕密度, 可以选择的值有: “ldpi”(约120dpi), “mdpi”(约 160dpi), “hdpi”(约240dpi), “xhdpi”(约320dpi), “280”,“360”, “420”, “480”, “560”.
栗子:
如果我们的APP想支持小屏幕(small)和普通屏幕(normal), 不管屏幕密度, 那么我们需要8个<screen>:
<manifest ... >
...
<compatible-screens>
<!-- all small size screens -->
<screen android:screenSize="small" android:screenDensity="ldpi" />
<screen android:screenSize="small" android:screenDensity="mdpi" />
<screen android:screenSize="small" android:screenDensity="hdpi" />
<screen android:screenSize="small" android:screenDensity="xhdpi" />
<!-- all normal size screens -->
<screen android:screenSize="normal" android:screenDensity="ldpi" />
<screen android:screenSize="normal" android:screenDensity="mdpi" />
<screen android:screenSize="normal" android:screenDensity="hdpi" />
<screen android:screenSize="normal" android:screenDensity="xhdpi" />
</compatible-screens>
<application ... >
...
<application>
</manifest>
参考:
http://developer.android.com/guide/topics/manifest/action-element.html
http://developer.android.com/guide/topics/manifest/activity-alias-element.html
http://developer.android.com/guide/topics/manifest/category-element.html
http://developer.android.com/guide/topics/manifest/compatible-screens-element.html