web-dev-qa-db-ja.com

Android:アプリのラベルをプログラムで変更

アプリケーションラベルを変更して、Javaコード)から表示されるアプリケーション名を変更するにはどうすればよいですか?

<application Android:icon="@drawable/icon" Android:label="@string/app_name">

Android Manifest

strings.xmlファイルの値を更新する方法はありますか?

25
Soul

現時点では不可能です。これはAndroidManifest.xmlファイル内の固定文字列であり、実行時に変更することはできません。

13
Mister Smith

アクティビティで、試しました

this.setTitle("your text");

そしてそれは働いた。それが一般的な解決策であることを願っています

49
Mark

<activity-alias>を使用すると、アプリのアイコンと名前を、事前定義されたいくつかに変更できます。

Mannifest.xmlにそのような構成を作成します

<activity Android:name="package.name.MainActivity"
 Android:screenOrientation="portrait"
 Android:label="@string/app_name"
 Android:theme="@style/CustomTheme"
 Android:launchMode="singleTask">
  <intent-filter>
    <category Android:name="Android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>

<activity-alias Android:label="@string/app_name_default" 
 Android:icon="@drawable/icon_default" 
 Android:name=".MainActivity-Default"
 Android:enabled="true"
 Android:targetActivity=".MainActivity">
  <intent-filter>
    <action Android:name="Android.intent.action.MAIN" />
    <category Android:name="Android.intent.category.LAUNCHER" />
  </intent-filter>   
</activity-alias>

<activity-alias Android:label="@string/app_name_flavor_one" 
 Android:icon="@drawable/icon_flavor_one" 
 Android:name=".MainActivity-Flavor-One"
 Android:enabled="false"
 Android:targetActivity=".MainActivity">
  <intent-filter>
    <action Android:name="Android.intent.action.MAIN" />
    <category Android:name="Android.intent.category.LAUNCHER" />
  </intent-filter>   
</activity-alias>

これで、これら2つのエイリアスを切り替えることができるため、アプリのアイコンや名前を変更します。デフォルトからフレーバーワンに切り替えるには、次のコードを使用します。

 getPackageManager().setComponentEnabledSetting(
    new ComponentName("package.name", "package.name.MainActivity-Flavor-One"), 
        PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
 getPackageManager().setComponentEnabledSetting(
    new ComponentName("package.name", "package.name.MainActivity-Default"), 
        PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

一度に有効になるエイリアスは1つだけであることを追跡する必要があることに注意してください

12

ランチャーアクティビティで、setContentView()を書く前に、

setTitle("Your Title");

どのように可能かはわかりませんが、きっとうまくいきます。

3
Vivek Modi

アプリケーションのAndroid:labelは固定リソース参照です。

しかし、このリファラーの下の文字列には、構成修飾子の名前(values-en、-large、-landなど)に応じて、 Providing Alternative Resources に従って複数の値が含まれる可能性があります。

1
Luten

スミス氏が言ったように、それは不可能です、

ただし、動的に有効/無効にして同じtargetActivityを指すことができる複数のActivityAliasを使用できます。したがって、アプリ名のチューザーを作成します。ユーザーがアプリを選択して、ActivityAliaspackageManagerで有効にします。

ComponentName componentName = new ComponentName(context, context.getPackageName() + "." + aliasName);
        context.getPackageManager().setComponentEnabledSetting(componentName,
                                                               PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                                                               PackageManager.DONT_KILL_APP);

古いエイリアスを非表示にするには、フラグを付けた同じコードを使用します:COMPONENT_ENABLED_STATE_DISABLED

エイリアスを有効にした後で、ホームランチャーにショートカットを直接追加することもできます。種をまく上でここに説明されている多くの方法があります。

0
JacksOnF1re

興味のある方へ: Androidアプリケーションのタイトルを変更する方法 しかし、「アプリケーションラベル」(つまり、アプリケーションリスト内のアイコンの名前)を変更するか、ウィンドウタイトルのみを変更するかは明確ではありません。

0
think01

ファームウェアを拡張する場合は、IconCache.Javaファイルを変更して電話の内部値を含む文字列を表示させることで、実際にこれを実現できます。

たとえば、SIMツールキットに運送業者の名前を表示する場合は、この方法で行うことができます。

しかし、通常のアプリについては、言われているように、現時点では不可能です。

0
Olaia