From ec598cb91c02c035d19ccd8a9f17e2bf8da9da5a Mon Sep 17 00:00:00 2001 From: Eric Fischer Date: Tue, 16 Jun 2009 13:31:22 -0700 Subject: [PATCH] Make the Quick Launch settings show localized application names. It looks like when you look up the name of an application bookmark, you get the name in whatever locale the device was in when it first booted. Check the PackageManager to get a name in the current locale, if possible, to display instead. --- .../quicklaunch/QuickLaunchSettings.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/quicklaunch/QuickLaunchSettings.java b/src/com/android/settings/quicklaunch/QuickLaunchSettings.java index 4d44524ac03..40316b567df 100644 --- a/src/com/android/settings/quicklaunch/QuickLaunchSettings.java +++ b/src/com/android/settings/quicklaunch/QuickLaunchSettings.java @@ -20,6 +20,8 @@ import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; import android.database.ContentObserver; import android.database.Cursor; import android.os.Bundle; @@ -39,6 +41,8 @@ import android.widget.AdapterView; import com.android.settings.R; +import java.net.URISyntaxException; + /** * Settings activity for quick launch. *

@@ -300,7 +304,27 @@ public class QuickLaunchSettings extends PreferenceActivity implements if (shortcut == 0) continue; ShortcutPreference pref = getOrCreatePreference(shortcut); - pref.setTitle(Bookmarks.getTitle(this, c)); + CharSequence title = Bookmarks.getTitle(this, c); + + /* + * The title retrieved from Bookmarks.getTitle() will be in + * the original boot locale, not the current locale. + * Try to look up a localized title from the PackageManager. + */ + int intentColumn = c.getColumnIndex(Bookmarks.INTENT); + String intentUri = c.getString(intentColumn); + PackageManager packageManager = getPackageManager(); + try { + Intent intent = Intent.getIntent(intentUri); + ResolveInfo info = packageManager.resolveActivity(intent, 0); + if (info != null) { + title = info.loadLabel(packageManager); + } + } catch (URISyntaxException e) { + // Just use the non-localized title, then. + } + + pref.setTitle(title); pref.setSummary(getString(R.string.quick_launch_shortcut, String.valueOf(shortcut))); pref.setHasBookmark(true);