activity alias 又是什么鬼 - UserWang/Android-Notes GitHub Wiki
语法:
<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>
说明
为目标Activity 属性命名的 Activity 指定别名,在清单文件中,目标Activity必须和别名Activity在同一个Application中,而且必须在别名Activity声明之前声明。 别名Activity 将目标Activity 表示为一个独立的实体,它可以设置自己的Intent过滤器,而不是目标Activity 的intent过滤器。这些过滤器可以决定哪些 Intent 能通过别名来激活目标 Activity,并且决定系统如何处理别名。例如,别名activity的intent过滤器可以指定"android.intent.action.MAIN" 和"android.intent.category.LAUNCHER"标记,使之能被application启动器识别,尽管目标Activity并没有Intent过滤器来设置这些标记。 除了目标Activity以外,<activity-alias>的属性也是<activity>属性的子集,对于该子集中已有的属性,目标Activity设置的值不会覆盖别名Activity里的值,但是对于子集中没有的属性,目标Activity设置的值同时也适用于别名Activity。
属性
【android:enabled】
系统能否用别名实例化目标activity,true代表可以,false代表不可以,默认为true。
<application>元素有它子集的enable属性,它适用于<application>中的所有应用程序组件,包括别名activity,<application>和<activity-alias>中的enable属性必须都是true,系统才能通过别名实例化目标activity,如果两个中有一个为false,别名就不起作用。
【android:exported】
其它应用程序的组件能否用别名来启动目标 Activity —“true”表示可以,“false”表示不可以。如果是“false”,那么只有和别名在同一个 application中或userID相同的应用组件才可以通过别名来启动目标activity。
默认值取决于别名是否包含intent过滤器。不包含任何过滤器意味着必须通过指定精确的别名来启动activity。这意味着别名仅供程序内部使用(因为其他程序不知道它完整的名字),这时候默认值为“false”,反之,只要有一个以上的过滤器存在,别名就可以被外部使用,这时候默认值就是“true”。
【android:icon】
用别名访问目标activity时用户看到的图标
【android:label】
用别名访问目标activity时用户看到的文本标签
【android:name】
别名的唯一名称。该类名应该使用类似于类的完全限定名称的格式,但是跟目标activity不同的是,别名的名称可以随意指定,因为他不代表一个实际的类。
【android:permission】
通过别名启动目标 Activity 或让它执行工作的客户端所必须拥有的权限名称。如果startActivity()或startActivityForResult()的调用者没有被授权,那么目标activity就不会被启动。
该属性将替代目标activity设置的权限,如果没有设置该属性,则说明可以不需要权限就可以通过别名启动目标activity。
【android:targetActivity】
通过别名可以启动的activity的名字。该名称必须与 manifest 文件中已定义的 < activity > 元素的 name 属性相一致。
参考链接:http://developer.android.com/intl/zh-cn/guide/topics/manifest/activity-alias-element.html