在我的清单文件中,我已将应用程序名称指定为MyApp,并将启动活动的名称指定为主菜单。
<application android:theme="@style/theme" android:icon="@drawable/myicon" android:label="@string/app_name">
<activity android:name=".MainMenu"
android:label="@string/mainmenu_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
当我在android的默认菜单屏幕中看到应用程序图标时,显示的名称是主菜单。为什么MyApp不是应用程序显示的名称?
答案 0 :(得分:10)
因为您的应用可以定义在启动器中显示的多个活动。具有此类意图过滤器的所有活动:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
将出现在启动器中,每个都有自己的标签。事实上,如果你没有在你的活动上定义一个标签,它从应用程序继承的基本上是一种商品。
此外,每个活动都有自己的android:icon
(同样,它继承自<application>
商品)。使用此属性,您的两个启动器条目不仅可以具有不同的标签,还可以具有不同的图标。
更一般地说,即使是“非主要”活动也可以处理某些类型的事件,在这些情况下,它们的标签和图标是相关的。例如,如果您的某个活动(无关紧要)处理ACTION_SEND
意图(如大多数共享应用程序那样 - 请参阅Facebook,Twitter,...),那么每当用户按下“共享”时任何应用程序中的按钮,可以完成向用户显示某些活动的应用程序列表(在这种情况下,这些应用程序可以是Facebook,Twitter和您的应用程序)。此列表将包含图标和标签(即 Facebook)。您的参赛作品的显示将由您的接收android:icon
定义的android:label
和<activity>
属性决定,并且只有在未定义这些属性时,才会从您的{{1}中获取}。
这使您可以在不修改应用程序名称的情况下输入“通过MyApp共享”等条目。或者,如果您的应用程序还有一个处理<application>
的活动,则该活动可能具有标签“在MyApp中查看”。
更深入地挖掘ACTION_VIEW
元素可以拥有自己的标签和图标。基本上,Android选择图标和标签来显示如下:
<intent-filter>
有,请选择,停止。<intent-filter>
有,请选择,停止。<activity>
中的一个。这在两种情况下很有用:
<application>
和ACTION_SEND
个意图。在这种情况下,您将为该活动设置两个意图过滤器,其标签为“通过MyApp共享”和“在MyApp中查看”。我希望我已经明确表示,这些是非常基本的事情,起初可能很难掌握,但这为构建应用程序并将它们与Android系统和/或其他应用程序集成提供了极大的灵活性。
另一件需要注意的事情是,您可以轻松拥有一个在启动器中没有任何条目的应用程序(通过上面提到的intent过滤器没有任何活动)。这些是完全有效的应用程序,在创建仅限服务的应用程序(例如小部件)时,这是一种很好的做法。
答案 1 :(得分:1)
如果为android:label
设置activity
,则会获取其值。对activity
省略它,然后取代android:label
上设置的application
属性。
您根本无法为活动和应用程序设置不同的标签,因为您的应用程序为您的活动设置了一个启动器,并带有您设置的标签。我不太确定我完全理解你想要实现的目标。
答案 2 :(得分:1)
在清单中,删除启动活动的android:label
属性。然后,活动将继承应用程序android:label
中指定的名称。