0.環境

[Android] 5.1.1

  • 文中、【】内は読み替えて下さい。

1.問題

  • Androidホーム画面の起動アイコンのタイトルをアプリ名にしたくて、下記(3)を追記したのですが変わりません・・・

    • AndroidManifest.xml

      <?xml version="1.0" encoding="utf-8"?>
      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="【パッケージ名】" >
      
          <application
              android:allowBackup="true"
              android:icon="@mipmap/ic_launcher"
              android:label="(1) App Name"
              android:theme="@style/AppTheme" >
              <activity
                  android:name=".MyActivity"
                  android:label="(2) My Activity's Title" >
                  <intent-filter android:label="(3) App Name">
                      <action android:name="android.intent.action.MAIN" />
      
                      <category android:name="android.intent.category.LAUNCHER" />
                  </intent-filter>
              </activity>
          </application>
      
      </manifest>
      
    • ネットで調べたところ、Android 5.1.1 だと(3)が無視され、下図のように起動アイコンにも(2)が表示されてしまうようです。

      変更前・起動アイコン

      変更前・Activity

2. 対策

  • まず”AndroidManifest.xml”では、Activityのlabelを下記(3)に変更することで、起動アイコンはアプリ名になります。(intent-filterのlabel指定はやめる)

  • そのままだと、Activityのタイトルもアプリ名になってしまうため、起動時にタイトルを書き換えることにしました。(下記 “MyActivity.java” 参照)

    • AndroidManifest.xml

      <?xml version="1.0" encoding="utf-8"?>
      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="【パッケージ名】" >
      
          <application
              android:allowBackup="true"
              android:icon="@mipmap/ic_launcher"
              android:label="(1) App Name"
              android:theme="@style/AppTheme" >
              <activity
                  android:name=".MyActivity"
                  android:label="(3) App Name" >
                  <intent-filter>
                      <action android:name="android.intent.action.MAIN" />
      
                      <category android:name="android.intent.category.LAUNCHER" />
                  </intent-filter>
              </activity>
          </application>
      </manifest>
      
    • MyActivity.java

      public class MyActivity extends ActionBarActivity {
      
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_my);
      
              // この1行を追記。
              setTitle("(2) My Activity's Title");
          }
      
          // 以下省略
      
    • こうすることで、起動アイコンにはアプリ名、Activityには専用のタイトルを表示できました。

      変更後・起動アイコン

      変更後・Activity

    • 定数は大体strings.xmlなどのリソースファイルで管理していると思うので、その場合は下記のように記載。

      setTitle(getString(R.string.title_activity_main));