Прежде всего, позволяет описать порядок действий, чтобы получить ярлык:
- Получить
ApplicationInfo
(информация приложение public int labelRes
- идентификатор ресурса метки);
- Получить ресурсы приложения для извлечения
labelRes
с его помощью - getResourcesForApplication();
- Установите необходимую локаль для получения
Resources
и извлеките строку labelRes
(обратите внимание, что я не упомянул nonLocalizedLabel, который необходимо проверить перед выполнением всех вышеперечисленных элементов);
Сам код очень прост (например, код из класса деятельности):
PackageManager pm = getPackageManager();
try {
ApplicationInfo galleryInfo = pm.getApplicationInfo("com.android.gallery3d", PackageManager.GET_META_DATA);
if (null != galleryInfo) {
final String label = String.valueOf(pm.getApplicationLabel(galleryInfo));
Log.w(TAG, "Current app label is " + label);
final Configuration config = new Configuration();
config.locale = new Locale("ru");
final Resources galleryRes = pm.getResourcesForApplication("com.android.gallery3d");
galleryRes.updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
final String localizedLabel = galleryRes.getString(galleryInfo.labelRes);
Log.w(TAG, "Localized app label is " + localizedLabel);
}
} catch (PackageManager.NameNotFoundException e) {
Log.e(TAG, "Failed to obtain app info!");
}
Производит следующий вывод (вторая строка метка в русской локали, который я предлагаю из кода - «ру»):
08-16 19:23:04.425: WARN/MyActivity(29122): Current app label is Gallery
08-16 19:23:04.425: WARN/MyActivity(29122): Localized app label is Галерея
Да, вот что я хочу! благодаря:) – mianlaoshu