获取原始应用名称而无需本地化

时间:2014-02-11 16:46:15

标签: android

我需要获取应用程序的名称,但没有本地语言,只能使用原始语言。 我来自波兰,我需要原始ENGLISH的应用程序名单! 我有那个代码:

final PackageManager packageManager = context.getPackageManager();
final Intent intent = new Intent("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");
final List<ResolveInfo> activities = packageManager.queryIntentActivities( intent, 0 );
final int size = activities.size();
for (int i = 0; i < size; i++){
    final ResolveInfo info = activities.get(i);
    final String label = info.loadLabel(packageManager).toString();
    final String pkgName = info.activityInfo.packageName;
    final String className = info.activityInfo.name;
    Log.d("INFO", label);
}

1 个答案:

答案 0 :(得分:0)

您可以使用包管理器中的getResourcesForApplication()。您可以设置资源文化并获取值。

请检查以下代码

PackageManager packageManager = getPackageManager();
final String packageName = "com.android.wallpaper.livepicker";
    try {
        ApplicationInfo applicationInfo = packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA);

        if (null != applicationInfo) {
            CharSequence label = packageManager.getApplicationLabel(applicationInfo);

            Log.d("MyTag", "Default app label is " + label);

            Configuration configuration = new Configuration();

            configuration.setLocale(new Locale("en"));

            Resources resources = packageManager.getResourcesForApplication(packageName);

            resources.updateConfiguration(configuration, getBaseContext().getResources().getDisplayMetrics());

            String localizedLabel = resources.getString(applicationInfo.labelRes);

            Log.d("MyTag", "Localized app label is " + localizedLabel);
        }
    } catch (PackageManager.NameNotFoundException e) {
        Log.e("MyTag", "Failed to obtain app info!");
    }