Existe una forma más fácil que las otras respuestas que no requiere que nombre el recurso explícitamente o se preocupe por las excepciones con los nombres de los paquetes. También funciona si ha utilizado una cadena directamente en lugar de un recurso.
Solo haz:
public static String getApplicationName(Context context) {
ApplicationInfo applicationInfo = context.getApplicationInfo();
int stringId = applicationInfo.labelRes;
return stringId == 0 ? applicationInfo.nonLocalizedLabel.toString() : context.getString(stringId);
}
Espero que esto ayude.
Editar
A la luz del comentario de Snicolas, modifiqué lo anterior para que no intente resolver la identificación si es 0. En su lugar, usa, nonLocalizedLabel
como un retroceso. No es necesario envolver en try / catch.
android:name
. Si codificó una cadena, falla.try ... catch
.