Dont crash if there is no spellchecker
The fact that isSpellCheckerEnabled returns true does not mean that getCurrentSpellChecker will return non null. By default isSpellCheckerEnabled is true in TextServicesSettings, even when there is no spellchecker service active on the device. The issue can be verified by disabling the Google Keyboard (assuming the GMS LatinImeGoogle is used) in Settings|Apps and later entering Settings|Language & input. Without this patch Settings crashes at that point with the following stack: E/AndroidRuntime(13020): Caused by: java.lang.NullPointerException: \ Attempt to invoke virtual method 'java.lang.CharSequence android.vie\ w.textservice.SpellCheckerInfo.loadLabel(android.content.pm.PackageM\ anager)' on a null object reference E/AndroidRuntime(13020): at com.android.settings.inputmethod.\ InputMethodAndLanguageSettings.onResume(InputMethodAndLanguageSettin\ gs.java:253) E/AndroidRuntime(13020): at android.app.Fragment.performResum\ e(Fragment.java:2096) E/AndroidRuntime(13020): at android.app.FragmentManagerImpl.m\ oveToState(FragmentManager.java:928) E/AndroidRuntime(13020): at android.app.FragmentManagerImpl.m\ oveToState(FragmentManager.java:1067) Bug: 19832033 Change-Id: I65e6d269572e064aa6897807b6611ef947d90211
This commit is contained in:
committed by
Yohei Yukawa
parent
8ac57a16cd
commit
b1570d285a
@@ -254,8 +254,9 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
|
|||||||
if (spellChecker != null) {
|
if (spellChecker != null) {
|
||||||
final TextServicesManager tsm = (TextServicesManager) getSystemService(
|
final TextServicesManager tsm = (TextServicesManager) getSystemService(
|
||||||
Context.TEXT_SERVICES_MANAGER_SERVICE);
|
Context.TEXT_SERVICES_MANAGER_SERVICE);
|
||||||
if (tsm.isSpellCheckerEnabled()) {
|
final SpellCheckerInfo sci = tsm.getCurrentSpellChecker();
|
||||||
final SpellCheckerInfo sci = tsm.getCurrentSpellChecker();
|
spellChecker.setEnabled(sci != null);
|
||||||
|
if (tsm.isSpellCheckerEnabled() && sci != null) {
|
||||||
spellChecker.setSummary(sci.loadLabel(getPackageManager()));
|
spellChecker.setSummary(sci.loadLabel(getPackageManager()));
|
||||||
} else {
|
} else {
|
||||||
spellChecker.setSummary(R.string.switch_off_text);
|
spellChecker.setSummary(R.string.switch_off_text);
|
||||||
|
Reference in New Issue
Block a user