Android TV默认Leanback Keyboard键盘,使用mm命令将AOSP输入法编译系统后,在使用前两者任一个输入法后按下BACK返回键某些情况下,输入的英文文本始终会出现一个红色下划线(无论拼写对错,而其他语言不会),并且使用Android Studio直接在未将AOSP输入法编译进系统的系统中进行AOSP输入法安装是不会出现红色下划线的。
红色下划线看起来像是Spell Checker检查出现的,受这篇讨论启发链接文章,发现该红色下划线可能与Settings的Secure表中的selected_spell_checker和spell_checker_enabled参数有关
查询Settings.java文件,其中对以上2个参数的描述如下:
/**
* The {@link ComponentName} string of the selected spell checker service which is
* one of the services managed by the text service manager.
*
* @hide
*/
public static final String SELECTED_SPELL_CHECKER = "selected_spell_checker";
/**
* The {@link ComponentName} string whether spell checker is enabled or not.
*
* @hide
*/
public static final String SPELL_CHECKER_ENABLED = "spell_checker_enabled";
selected_spell_checker:设置一个默认的拼写检查服务
spell_checker_enabled:设置拼写检查功能能否使用
检查AOSP输入法编译进系统前的settings_secure.xml文件
将AOSP输入法编译进系统后的settings_secure.xml文件
value值从印度语的检查拼写服务HinglishSpellCheckerService变为了AOSP中的AndroidSpellCheckerService服务导致了该问题的出现。
问题源头分析清楚,办法也就出来了
将spell_checker_enabled值设置为0(0是不检查,1是检查)
android.provider.Settings.Secure.putInt(getApplicationContext().getContentResolver(),
"spell_checker_enabled",
0);
将selected_spell_checker改回印度语的检查服务,改成其他语言的检查服务也行,只要不是AOSP的检查服务
android.provider.Settings.Secure.putString(getApplicationContext().getContentResolver(),
"selected_spell_checker",
"com.google.android.apps.inputmethod.hindi/.spellchecker.HinglishSpellCheckerService");
2018年3月23日更新
在AOSP输入法应用中,找到AndroidManifest.xml文件,发现在SpellChecker的meta-data下有这样一句话
android:resource="@xml/spellchecker"
进入spellchecker.xml文件,这个文件里是用来为SpellCheckerService配置一些不同语言的检查参数的,如果不想让spell checker检查的话,将里面的英语部分的内容注释掉就不会再出现红线问题了。
Android6.0找不到settings.db数据库问题
[Q] Remove red underlines
如果文章对你有帮助的话,点赞对我也是种鼓励,赞赏更是打鸡血! : )