activity-alias详解
一、定义与用途
activity-alias是Android应用程序中的一种组件,它允许开发者为Activity指定多个别名,从而实现不同的启动方式。通过activity-alias,用户可以在不同的场景下启动同一个Activity,从而提升用户体验。activity-alias作为一个已存在Activity的别名,可以通过该别名标签声明快速打开目标Activity,并可用于设置某个Activity的快捷入口,满足快速到达功能界面的需求。
二、基本语法
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>
三、主要属性
-
android:enabled
- 用来决定目标Activity可否通过别名被系统实例化。默认为true。需要注意的是,application也有enable属性,只有当它们同时为true时,activity-alias的enable才生效。
-
android:exported
- 用来指定其他应用程序组件能否通过这个别名来启动目标Activity。如果设置为true,则能够启动;如果设置为false,则只能由与别名相同的应用程序组件或具有相同用户ID的应用程序通过别名来启动。其默认值根据activity-alias是否包含intent-filter元素决定,如果有intent-filter,则默认为true;否则为false。
-
android:icon
- 允许为别名设置一个图标,这个图标可以在应用的启动器窗口中表示目标Activity,也可以用于在桌面上创建快捷入口时显示。
-
android:label
- 为别名设置一个可读的标签,这个标签会显示在应用的启动器窗口或桌面上。
-
android:name
- 为别名设置一个唯一的名字。这个名字应该像一个完全限定的类名,但实际上它并不对应一个实际的类名,而是作为别名的唯一标识。
-
android:permission
- 设定权限的名称,客户端必须有这个权限才能启动目标Activity或通过别名来获取目标Activity以便做某些事情。
-
android:targetActivity
- 指定该别名对应的目标Activity,即通过activity-alias调起的Activity是哪个。这个属性是必需的,且必须指向一个已经声明的Activity。
四、使用场景
- 创建快捷入口:通过为某个Activity配置activity-alias,并在桌面上为其创建一个快捷入口,用户可以直接点击桌面图标进入该Activity,无需先打开主界面。
<activity android:name=".MainActivity2"/>
<activity-alias
android:name="MainActivity2"
android:exported="true"
android:label="快捷方式"
android:targetActivity=".MainActivity2">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity-alias>
给应用提供了一个新的入口,这样可以在桌面看见快捷方式入口,点击可以直接跳转到对应的界面
- 修改Activity属性:使用activity-alias可以修改一个已有活动的属性,比如修改活动的label、icon或theme等,而无需直接修改Activity本身的属性。
五、注意事项
-
activity-alias只是一个别名,它本身并不是一个活动组件,所以它没有自己的生命周期,也不能接收自己的Intent。它只是一个代理,通过intent-filter转发到targetActivity所指定的活动组件。
-
在AndroidManifest.xml配置文件中,activity-alias标签元素必须声明在目标Activity对应的activity标签元素之后,否则会编译错误。
-
activity-alias的属性是activity属性的子集。对于共有的属性,以activity-alias中的设置为准;对于仅activity才有的属性,则为目标Activity配置的属性会在activity-alias中生效。
954

被折叠的 条评论
为什么被折叠?



