Існує простіший спосіб, ніж інші відповіді, який не вимагає від вас чітко називати ресурс або турбуватися про винятки з іменами пакунків. Він також працює, якщо ви використовували рядок безпосередньо замість ресурсу.
Просто зробіть:
public static String getApplicationName(Context context) {
ApplicationInfo applicationInfo = context.getApplicationInfo();
int stringId = applicationInfo.labelRes;
return stringId == 0 ? applicationInfo.nonLocalizedLabel.toString() : context.getString(stringId);
}
Сподіваюся, це допомагає.
Редагувати
У світлі коментаря Snicolas я змінив вище, щоб він не намагався вирішити ідентифікатор, якщо він дорівнює 0. Натомість він використовує nonLocalizedLabelяк backoff. Немає необхідності в упаковці в спробу / ловити.
android:name. Якщо ви жорстко закодували рядок, то вона виходить з ладу.