Arnab Bhagabati
Arnab Bhagabati

Reputation: 2715

Android app icon name picked from activity label than from application label

Not sure if anyone else posted this question, didn't find any, though there are similar ones.

This is my manifest xml:

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
      android:name="com.listCalc.tutorial.simpleinappbillingv3.ui.StartUpActivity"
      android:label="@string/activity_startup_label"
      android:screenOrientation="portrait" >
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
    <activity
      android:name="com.listCalc.tutorial.simpleinappbillingv3.ui.MainActivity"
      android:label="@string/activity_main_label"
      android:screenOrientation="portrait" />
    <activity
      android:name="com.listCalc.tutorial.simpleinappbillingv3.ui.PurchasePassportActivity"
      android:label="@string/activity_purchase_label"
      android:screenOrientation="portrait" />
  </application>

String.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>

  <string name="app_name">List Calc in-app billing V3</string>
  <string name="hello_world">Hello world!</string>
  <string name="menu_settings">Settings</string>
  <string name="main_button_purchase_passport_text">Purchase Passport</string>
  <string name="main_cont_desc_image_passport">purchased passport</string>
  <string name="activity_startup_label">Loading</string>
  <string name="activity_main_label">Main Menu</string>
  <string name="activity_purchase_label">Making Purchase</string>

</resources>

The application name i.e. the launcher icon name is being picked up as "activity_startup_label" and not "app_name"

What am I doing wrong?

Upvotes: 16

Views: 4561

Answers (5)

Adil Hussain
Adil Hussain

Reputation: 32103

An alternative solution to the one proposed by Commonsware (which I've found to be hit and miss on some devices) is to set the label of the application in the manifest as you're doing, to not set the label of the launcher activity in the manifest and instead to set it programmatically in your activity's onCreate(Bundle) method as follows:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setTitle(R.string.activity_startup_label);
    // do whatever else you need to
}

Upvotes: 2

Sagar Shah
Sagar Shah

Reputation: 4292

If you have a "launcher activity" with [label name] & "application tag" also with a different [label name] then Android will take the [label name] from the Launcher Activity.

Upvotes: 1

meda
meda

Reputation: 45490

In your manifest.xml change your label to:

    android:label="@string/app_name"

Upvotes: 0

japk
japk

Reputation: 629

Probably because the label of the main activity is "activity_startup_label"

Upvotes: 0

CommonsWare
CommonsWare

Reputation: 1006564

What am I doing wrong?

Nothing. This is working as designed.

You are welcome to also have an android:label attribute on the <intent-filter>, which should be used for the launcher icon label, according to the documentation:

The icon and label set for an intent filter are used to represent a component whenever the component is presented to the user as fulfilling the function advertised by the filter. For example, a filter with "android.intent.action.MAIN" and "android.intent.category.LAUNCHER" settings advertises an activity as one that initiates an application — that is, as one that should be displayed in the application launcher. The icon and label set in the filter are therefore the ones displayed in the launcher.

Upvotes: 14

Related Questions