Android应用名称与Activity名称一致、显示异常问题及修改咨询
嗨,我来帮你理清这两个关于应用名称显示的问题,结合你给出的配置文件,咱们逐一分析:
问题1:为何我的应用名称与Activity名称相同?
这是因为Android桌面(Launcher)显示的应用名称,会优先读取带有MAIN和LAUNCHER意图过滤器的组件的android:label属性值,而非<application>标签的label。
看你的配置:
- 你的
<activity-alias>组件设置了android:label="@string/main_activity_title"(对应值是"Money"),而这个别名正是绑定了启动应用的<intent-filter>(包含MAIN和LAUNCHER)。 - 同时你的
MoneyActivity也用了同一个@string/main_activity_title作为自身的label。
这就导致桌面显示的应用名称和Activity的标题都是"Money",看起来就像是两者名称相同了。
问题2:为何我的应用显示名称为“Money”而非“My Application”?该如何修改?
原因
刚才已经提到核心逻辑:Launcher会优先使用启动组件(这里是activity-alias)的label值。你的activity-alias指定了@string/main_activity_title("Money"),所以桌面显示的是这个值,而非<application>中设置的@string/app_name("My Application")。
修改方案(二选一即可)
方案1:直接修改
activity-alias的label为@string/app_name
把<activity-alias>的android:label改成和应用级别的label一致,这样桌面显示应用名称为"My Application",而MoneyActivity的标题依然保留"Money",两者互不影响:<activity-alias android:name=".MainActivity" android:label="@string/app_name" android:launchMode="singleTop" android:targetActivity=".activities.money.list.MoneyActivity"> <intent-filter android:label="@string/app_name"> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity-alias>方案2:移除
activity-alias的android:label属性
如果不单独给activity-alias设置label,系统会自动继承<application>标签的label值。修改后代码如下:<activity-alias android:name=".MainActivity" android:launchMode="singleTop" android:targetActivity=".activities.money.list.MoneyActivity"> <intent-filter android:label="@string/app_name"> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity-alias>
补充说明:<intent-filter>里的android:label一般用于特殊场景(比如显示该意图的功能描述),不会影响桌面的应用名称显示,你可以根据需求保留或调整它。
内容的提问来源于stack exchange,提问作者user11705159




