Il existe un moyen plus simple que les autres réponses qui ne vous oblige pas à nommer la ressource explicitement ou à vous soucier des exceptions avec des noms de package. Cela fonctionne également si vous avez utilisé une chaîne directement au lieu d'une ressource.
Faites simplement:
public static String getApplicationName(Context context) {
ApplicationInfo applicationInfo = context.getApplicationInfo();
int stringId = applicationInfo.labelRes;
return stringId == 0 ? applicationInfo.nonLocalizedLabel.toString() : context.getString(stringId);
}
J'espère que cela t'aides.
Éditer
À la lumière du commentaire de Snicolas, j'ai modifié ce qui précède afin qu'il n'essaie pas de résoudre l'id s'il est 0. Au lieu de cela, il utilise, nonLocalizedLabel
comme un backoff. Pas besoin d'envelopper dans try / catch.
android:name
. Si vous avez codé en dur une chaîne, cela échoue.try ... catch
.S'il n'est pas mentionné dans le fichier strings.xml / hardcoded dans AndroidManifest.xml pour une raison quelconque comme android: label = "MyApp"
Ou si vous connaissez l'ID de ressource String, vous pouvez l'obtenir directement via
la source
la source
CharSequence
. Je pense que vous avez besoin.toString()
à la fin.À partir de n'importe quelle utilisation de contexte:
la source
Si vous connaissez le nom du package, utilisez l'extrait de code suivant
la source
Si vous n'avez besoin que du nom de l'application, pas du nom du package, écrivez simplement ce code.
la source
Dans Kotlin , utilisez les codes suivants pour obtenir le nom de l'application:
la source
À Kotlin, c'est simple:
la source
Obtenez le nom de l'application à l'aide de RunningAppProcessInfo comme:
la source
Ok les gars, une autre option élégante est
Application.Context.ApplicationInfo.NonLocalizedLabel
vérifié pour l'étiquette Android codée en dur sur l'élément d'application.
<application android:label="Big App"></application>
Référence: http://developer.android.com/reference/android/content/pm/PackageItemInfo.html#nonLocalizedLabel
la source
Le commentaire source ajouté à
NonLocalizedLabel
nous dirige maintenant vers:la source
Avez-vous essayé d'utiliser la
PackageManager#getActivityInfo()
méthode? Il y aura un champ qui doit contenir le nom de l'application.Voir la réponse à une question très similaire ici .
la source