diff options
| author | 2017-10-04 19:39:53 +0000 | |
|---|---|---|
| committer | 2017-10-04 19:39:53 +0000 | |
| commit | f93ca9fb89b58ee70e77db5d9dc08852593be3fc (patch) | |
| tree | 5b33729a21767003bdfa9499118496546d57cf34 | |
| parent | ea2c75f5ffc683a4f63bc29c711123107f673070 (diff) | |
| parent | b119a0853b3a5921504b2cbeeed359659b55ed6d (diff) | |
Merge "Select only preinstalled Spell Checker Services" into oc-mr1-dev
| -rw-r--r-- | services/core/java/com/android/server/TextServicesManagerService.java | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/services/core/java/com/android/server/TextServicesManagerService.java b/services/core/java/com/android/server/TextServicesManagerService.java index c297010e4389..bf6fdf9533f8 100644 --- a/services/core/java/com/android/server/TextServicesManagerService.java +++ b/services/core/java/com/android/server/TextServicesManagerService.java @@ -186,7 +186,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { buildSpellCheckerMapLocked(mContext, mSpellCheckerList, mSpellCheckerMap, mSettings); SpellCheckerInfo sci = getCurrentSpellChecker(null); if (sci == null) { - sci = findAvailSpellCheckerLocked(null); + sci = findAvailSystemSpellCheckerLocked(null); if (sci != null) { // Set the current spell checker if there is one or more spell checkers // available. In this case, "sci" is the first one in the available spell @@ -230,7 +230,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { change == PACKAGE_PERMANENT_CHANGE || change == PACKAGE_TEMPORARY_CHANGE // Package modified || isPackageModified(packageName)) { - SpellCheckerInfo availSci = findAvailSpellCheckerLocked(packageName); + SpellCheckerInfo availSci = findAvailSystemSpellCheckerLocked(packageName); // Set the spell checker settings if different than before if (availSci != null && !availSci.getId().equals(sci.getId())) { setCurrentSpellCheckerLocked(availSci); @@ -375,18 +375,26 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { mSpellCheckerBindGroups.clear(); } - private SpellCheckerInfo findAvailSpellCheckerLocked(String prefPackage) { - final int spellCheckersCount = mSpellCheckerList.size(); + private SpellCheckerInfo findAvailSystemSpellCheckerLocked(String prefPackage) { + // Filter the spell checker list to remove spell checker services that are not pre-installed + ArrayList<SpellCheckerInfo> spellCheckerList = new ArrayList<>(); + for (SpellCheckerInfo sci : mSpellCheckerList) { + if ((sci.getServiceInfo().applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) { + spellCheckerList.add(sci); + } + } + + final int spellCheckersCount = spellCheckerList.size(); if (spellCheckersCount == 0) { Slog.w(TAG, "no available spell checker services found"); return null; } if (prefPackage != null) { for (int i = 0; i < spellCheckersCount; ++i) { - final SpellCheckerInfo sci = mSpellCheckerList.get(i); + final SpellCheckerInfo sci = spellCheckerList.get(i); if (prefPackage.equals(sci.getPackageName())) { if (DBG) { - Slog.d(TAG, "findAvailSpellCheckerLocked: " + sci.getPackageName()); + Slog.d(TAG, "findAvailSystemSpellCheckerLocked: " + sci.getPackageName()); } return sci; } @@ -400,7 +408,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { final ArrayList<Locale> suitableLocales = InputMethodUtils.getSuitableLocalesForSpellChecker(systemLocal); if (DBG) { - Slog.w(TAG, "findAvailSpellCheckerLocked suitableLocales=" + Slog.w(TAG, "findAvailSystemSpellCheckerLocked suitableLocales=" + Arrays.toString(suitableLocales.toArray(new Locale[suitableLocales.size()]))); } final int localeCount = suitableLocales.size(); @@ -408,7 +416,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { final Locale locale = suitableLocales.get(localeIndex); for (int spellCheckersIndex = 0; spellCheckersIndex < spellCheckersCount; ++spellCheckersIndex) { - final SpellCheckerInfo info = mSpellCheckerList.get(spellCheckersIndex); + final SpellCheckerInfo info = spellCheckerList.get(spellCheckersIndex); final int subtypeCount = info.getSubtypeCount(); for (int subtypeIndex = 0; subtypeIndex < subtypeCount; ++subtypeIndex) { final SpellCheckerSubtype subtype = info.getSubtypeAt(subtypeIndex); @@ -427,7 +435,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { if (spellCheckersCount > 1) { Slog.w(TAG, "more than one spell checker service found, picking first"); } - return mSpellCheckerList.get(0); + return spellCheckerList.get(0); } // TODO: Save SpellCheckerService by supported languages. Currently only one spell |