【AOSP输入法】Android TV 7.0添加AOSP输入法(LatinIME)后,编辑文本BACK键返回出现红色下划线的解决办法

问题描述:

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


如果文章对你有帮助的话,点赞对我也是种鼓励,赞赏更是打鸡血! : )

【AOSP输入法】Android TV 7.0添加AOSP输入法(LatinIME)后,编辑文本BACK键返回出现红色下划线的解决办法_第1张图片


你可能感兴趣的:(android学习)