Fix a bug with the user dictionary locale.
We internally use the string "zz" to mean no locale, but the user dictionary service does not understand that and words added with this locale pitifully end being added to a "zz" user dictionary, which makes no sense to the user. This change fixes things so that words added when the keyboard is in a "no locale" layout, the words are added to the global, all-locales user dictionary. Bug: 6645306 Change-Id: Iec3cdd1fe3d5bc43427a43ef9ae9bf89e12be1f2
This commit is contained in:
parent
bd1d711488
commit
d113fd0be4
1 changed files with 10 additions and 2 deletions
|
@ -34,7 +34,10 @@ import java.util.Arrays;
|
|||
*/
|
||||
public class UserBinaryDictionary extends ExpandableBinaryDictionary {
|
||||
|
||||
// TODO: use Words.SHORTCUT when it's public in the SDK
|
||||
// The user dictionary provider uses an empty string to mean "all languages".
|
||||
private static final String USER_DICTIONARY_ALL_LANGUAGES = "";
|
||||
|
||||
// TODO: use Words.SHORTCUT when we target JellyBean or above
|
||||
final static String SHORTCUT = "shortcut";
|
||||
private static final String[] PROJECTION_QUERY;
|
||||
static {
|
||||
|
@ -71,7 +74,12 @@ public class UserBinaryDictionary extends ExpandableBinaryDictionary {
|
|||
final boolean alsoUseMoreRestrictiveLocales) {
|
||||
super(context, getFilenameWithLocale(NAME, locale), Dictionary.TYPE_USER);
|
||||
if (null == locale) throw new NullPointerException(); // Catch the error earlier
|
||||
mLocale = locale;
|
||||
if (SubtypeLocale.NO_LANGUAGE.equals(locale)) {
|
||||
// If we don't have a locale, insert into the "all locales" user dictionary.
|
||||
mLocale = USER_DICTIONARY_ALL_LANGUAGES;
|
||||
} else {
|
||||
mLocale = locale;
|
||||
}
|
||||
mAlsoUseMoreRestrictiveLocales = alsoUseMoreRestrictiveLocales;
|
||||
// Perform a managed query. The Activity will handle closing and re-querying the cursor
|
||||
// when needed.
|
||||
|
|
Loading…
Reference in a new issue