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.
This commit is contained in:
@@ -20,6 +20,8 @@ import android.app.AlertDialog;
|
|||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import android.content.pm.ResolveInfo;
|
||||||
import android.database.ContentObserver;
|
import android.database.ContentObserver;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@@ -39,6 +41,8 @@ import android.widget.AdapterView;
|
|||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
|
||||||
|
import java.net.URISyntaxException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Settings activity for quick launch.
|
* Settings activity for quick launch.
|
||||||
* <p>
|
* <p>
|
||||||
@@ -300,7 +304,27 @@ public class QuickLaunchSettings extends PreferenceActivity implements
|
|||||||
if (shortcut == 0) continue;
|
if (shortcut == 0) continue;
|
||||||
|
|
||||||
ShortcutPreference pref = getOrCreatePreference(shortcut);
|
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,
|
pref.setSummary(getString(R.string.quick_launch_shortcut,
|
||||||
String.valueOf(shortcut)));
|
String.valueOf(shortcut)));
|
||||||
pref.setHasBookmark(true);
|
pref.setHasBookmark(true);
|
||||||
|
Reference in New Issue
Block a user