Android应用程序名称显示为活动名称

Android应用程序名称显示为活动名称,android,Android,我已经查看了应用程序的清单,在apps launcher下,它显示为活动名称而不是应用程序名称?这是为什么。我有另一个应用程序,当我安装它时,应用程序中的每个活动都有5个条目,而应该只有一个名称,即应用程序的名称?因此,当我启动时,它在启动列表中有5个同名的应用程序。这些都是以应用程序命名的,但每个活动都有一个。原因可能是什么?对于第一个问题,您应该知道,如果启动活动上没有标签,则名称来自应用程序标签上的android:label属性中设置的默认标签: <application andro

我已经查看了应用程序的清单,在apps launcher下,它显示为活动名称而不是应用程序名称?这是为什么。我有另一个应用程序,当我安装它时,应用程序中的每个活动都有5个条目,而应该只有一个名称,即应用程序的名称?因此,当我启动时,它在启动列表中有5个同名的应用程序。这些都是以应用程序命名的,但每个活动都有一个。原因可能是什么?

对于第一个问题,您应该知道,如果启动
活动上没有标签,则名称来自应用程序标签上的
android:label
属性中设置的默认标签:

<application android:name="ApiDemosApplication"
   android:label="@string/activity_sample_code"
   android:icon="@drawable/app_sample_code">
如果您在所有活动上都有这样的意向过滤器标签,那么您应该在所有活动上去掉意向过滤器标签,但要在启动时启动的
活动
除外。如果此
活动
有标签,则该标签将与启动器图标一起显示


从API 27+的2019/01/03起,似乎将启动第一个带有
启动器
类别的活动,其标签将与应用程序图标关联,因此可能没有严格必要删除所有冗余的意向过滤器,但我还是会这样做,因为这会导致混淆。

当您通过Eclipse创建活动时,活动中的属性android:label在AndroidManifest.xml中会自动设置为“@string/your_Activity_name”。添加意图过滤器以提供此活动的启动程序,启动程序将获得与活动相同的标签android:label


如果你想用你的应用程序名来标记启动程序,你应该将Activities android:label更改为类似“@string/app_name”的内容。

上面接受的答案是错误的。上面说,

该名称来自应用程序标记上的android:label属性

那不是真的。以下面的代码为例

<activity android:name="ApiDemos" android:label="@string/app_name">
     <intent-filter>
         <action android:name="android.intent.action.MAIN" />
         <category android:name="android.intent.category.DEFAULT" />
         <category android:name="android.intent.category.LAUNCHER" />
     </intent-filter>
</activity>

在此代码中,启动器中显示的应用程序名称由
activity
标记中的
android:label
属性设置,而不是上述公认答案所述的
应用程序
标记

要更正上述接受的响应,启动器中图标下显示的名称来自入口点活动的
活动
标记中的
android:label
属性(包含
DEFAULT
launcher
类别的活动标记)除非您没有在那里指定,否则它来自
应用程序
标记上的
android:label
属性


您的第一个问题可以通过更改入口点活动标签中的
android:label
属性来解决。

使用不同应用程序名称的一种方法(应用程序图标下显示的名称)点击应用程序图标时启动的活动的另一个名称是在活动的onCreate()方法中显式设置不同的字符串,如下所示:

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  // Do your thing
  // ... bla bla bla

  getActionBar().setTitle(R.string.activity_title);
}

希望这有帮助

运行Android版本4.1.2的应用程序的名称相对于“活动集”中定义为主启动器的标签将是“静态”的,并且不会在任何意图过滤器中被覆盖,就好像您希望将图像视图放置在工具栏标题的位置一样。您必须将android清单中特定活动的标签更新为
android:label=“”执行此操作后,您的活动名称将不会显示在图像视图后的工具栏中,请使用以下代码设置图像视图以及导航图标和无工具栏标题

try {
    Toolbar  toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    toolbar.setTitle("");
    if (getSupportActionBar() != null)
        getSupportActionBar().setIcon(R.drawable.header_image_wt);
} catch (Exception e) {
    e.getMessage();
}

这似乎很奇怪。我的意思是,为什么android甚至应该允许多个同名应用出现在应用程序启动列表中?请粘贴您的清单内容。其中一个问题是,对于多个同名应用程序,laucher类别活动太多。我想这解释了我在第二个应用程序中看到的情况。好的。因此,如果没有标签,它将选择一个主要活动的名称。看起来启动器条目应该是针对应用程序的,而不是基于活动的,但这是一个问题。事实上,我在上面发布的清单中确实有一个安卓标签??安卓:label=“@string/app\u name”我也遇到了同样的问题,但通过改变安卓系统解决了这个问题:安卓系统中的名称,这是一个多么奇怪的行为。对活动使用活动名称,对启动器使用应用程序名称似乎更符合逻辑。你认为它的工作方式有什么意义吗?这样应用程序开发人员就可以有多个启动器图标(以及相关的入口点活动),并且可以为每个启动器图标分别命名。您可以通过在清单中的多个活动标记中包含以下代码来完成此操作:
,并将
android:label=“@string/app\u name”
添加到每个活动标记中。@Patrick那么我如何将条目活动的标签与应用程序名称分开放置呢?如果我只希望有一个主要活动?如果使用支持库,请使用而不是
getActionBar()
try {
    Toolbar  toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    toolbar.setTitle("");
    if (getSupportActionBar() != null)
        getSupportActionBar().setIcon(R.drawable.header_image_wt);
} catch (Exception e) {
    e.getMessage();
}