无法从清单中为应用程序和启动器活动设置不同的图标/标签

时间:2013-06-19 13:32:08

标签: android android-layout android-manifest

我知道之前已经问过这个问题,但是在所有这些问题中,答案是从onCreate活动方法设置它。 我不想在我的onCreate方法中这样做,所以我这样做了我的清单文件,但无济于事: -

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher_screen"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Holo.Light"
         >
        <activity
            android:name="com.iws.unify.HomeScreen"
            android:label="@string/nullstring"
            android:icon="@drawable/ic_launcher"
             >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

出于某种原因,我在活动中设置的任何图标/标签都会覆盖应用程序标签中那些令人讨厌的图标/标签。请帮忙。

4 个答案:

答案 0 :(得分:14)

如果您只需要一个与应用程序图标不同的活动操作栏图标,则可以使用“android:logo”属性覆盖它:

    <activity
        android:name="com.iws.unify.HomeScreen"
        android:label="@string/nullstring"
        android:logo="@drawable/ic_launcher">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

答案 1 :(得分:4)

我有同样的问题,我使用非常奇怪但简单的解决方案解决了。

1-创建一个新活动并将其命名为LauncherActivity。(将此活动的图标和标签设置为您希望显示为应用程序图标/标签的内容)

2-将此活动设为主要&amp;您应用的启动器活动。(从您的HomeScreen活动中删除<intent-filter>标记)

3-将此活动的主题设置为android:theme="@android:style/Theme.Translucent"

4-现在在你的LauncherActivity onCreate()中,只要使用意图启动HomeScreen活动并完成此活动,就不要做任何事情。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Intent intent = new Intent(this, HomeScreen.class);
    startActivity(intent);
    finish();
}

完成()是必需的,因此当您按下HomeScreen中的后退按钮时,应用程序将关闭。

现在,您的应用图标和标签将与您的HomeScreen图标和标签不同

你的清单应该是这样的:

<application
    android:allowBackup="true"
    android:theme="@android:style/Theme.Holo.Light"
     >
    <activity
        android:name="com.iws.unify.HomeScreen"
        android:label="@string/nullstring"
        android:icon="@drawable/ic_launcher"
         >
    </activity>

    <activity
        android:name="com.iws.unify.LauncherActivity"
        android:icon="@drawable/ic_launcher_screen"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Translucent" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

答案 2 :(得分:1)

答案:

删除android活动中的图标。

额外信息:

android运行时将考虑活动启动器的主要活动。

例如: 如果您在两个活动“a”和“b”中声明以下代码:

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

然后你的应用程序将有两个启动器图标“a”和“b”。

答案 3 :(得分:0)

您还可以使用“activity-alias”:

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.Holo.Light">

    <activity
        android:name="com.iws.unify.HomeScreen"
        android:label="@string/nullstring"
        android:exported="true" />             

    <activity-alias
        android:name=".LaucherActivityAlias"
        android:targetActivity="com.iws.unity.HomeScreen"
        android:icon="@drawable/ic_launcher_screen">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity-alias>

</application>

您的“playstore”图标将是应用程序节点中指定的图标,因此您也可以在需要时执行此操作:

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher_screen"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.Holo.Light">

    <activity
        android:name="com.iws.unify.HomeScreen"
        android:label="@string/nullstring"
        android:icon="@drawable/ic_launcher"
        android:exported="true" />             

    <activity-alias
        android:name=".LaucherActivityAlias"
        android:targetActivity="com.iws.unity.HomeScreen"
        android:icon="@drawable/ic_launcher_screen">
        <intent-filter>
        <action android:name="android.intent.action.MAIN" />
             <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity-alias>

</application>