gpt4 book ai didi

android - 从 PackageManager 获取本地化标签名称的方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:39:04 29 4
gpt4 key购买 nike

我正在使用 PackageManager.getApplicationLabel(ApplicationInfo) 获取应用程序名称。但是这个名称可能会根据设备区域设置和应用程序资源字符串而改变。

所以我想知道是否有任何方便的方法来获取指定的本地化标签(如果不存在则返回 null)?如PackageManager.getApplicationLabel(ApplicationInfo info, Locale prefereLocale)?

最佳答案

首先,让我们描述获取标签的操作顺序:

  1. 获取ApplicationInfo(应用信息有public int labelRes - 标签的资源id);
  2. 获取应用程序资源以从中检索labelRes - 使用getResourcesForApplication() ;
  3. 设置必要的语言环境以获取 Resources 并检索字符串 labelRes(请注意,我没有提到 nonLocalizedLabel,在执行上述所有项目之前应检查它) ;

代码本身非常简单(例如来自 Activity 类的代码):

    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!");
}

产生以下输出(第二个字符串标签是我从代码设置的俄语语言环境 - 'ru'):

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 Галерея

关于android - 从 PackageManager 获取本地化标签名称的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18266202/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com