Il existe un moyen plus simple que les autres réponses, qui ne nécessite pas de nommer explicitement la ressource ou de s'inquiéter des exceptions avec les noms de paquets. Elle fonctionne également si vous avez utilisé directement une chaîne au lieu d'une ressource.
Fais-le :
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 vous aidera.
Edit
À la lumière du commentaire de Snicolas, j'ai modifié la méthode ci-dessus pour qu'elle n'essaie pas de résoudre l'identifiant s'il est égal à 0, mais qu'elle utilise, nonLocalizedLabel
comme backoff. Il n'est pas nécessaire de l'enfermer dans un try/catch.