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)が表示されてしまうようです。
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には専用のタイトルを表示できました。
定数は大体strings.xmlなどのリソースファイルで管理していると思うので、その場合は下記のように記載。
setTitle(getString(R.string.title_activity_main));