2014-02-11 44 views
3

我需要獲取應用的名稱,但沒有本地語言,只能使用原始語言。 我來自波蘭,需要原版英文的應用程序名單! 我有代碼:獲取未本地化的原始應用名稱

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

回答

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