activity-alias 标签
activity 别名, 使用 android:targetActivity 指定真正指向的 activity, 调用这个 activity 会打开 targetActivity;
1 2 3 4 5 6 7 8 9 |
<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:name 任意字符串, 符合规范即可, 可通过 Intent.getComponent().getClassName() 获取;
activity-alias 标签内的属性, 对通过这个标签进入的有效; 不影响 targetActivity 所在的 activity 内的属性;
meta-data 标签
meta-data 是 activity/activity-alias, application, provider, service 和 receiver 内的标签,
1 2 3 4 5 6 7 |
<... > <meta-data android:name="string" android:resource="resource specification" android:value="string" /> </...> |
- android:value 可以放入 String/float/int(支持'#'开头的十六进制)/boolean
- 一个 meta-data 内存放一条数据, 不要同时存在 android:resource 和 android:value
假设一个 meta-data 在 activity/activity-alias 标签内, 使用下面的方法获取标签内的值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// xml 中, 例子, android:resource 和 android:value 在同一个标签属性内 <meta-data android:name="name_string" <!--android:resource="@string/app_name"--> android:value="value_string" /> // java 中 try { ActivityInfo ai = getPackageManager().getActivityInfo(getComponentName(), PackageManager.GET_META_DATA); if (ai == null || ai.metaData == null) return; String value = ai.metaData.getString("name_string"); //int id = ai.metaData.getInt("name_string"); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } // receiver : getReceiverInfo() // 其它标签内类似处理 |
使用:
结合 activity-alias 使用, 根据不同的 android:value 在 targetActivity 里打开不同的 Fragment
0 Comments