1. 输入法源码位置
packages/inputmethods
2.各输入法名称
3. 修改输入法
(1)原生输入法
LatinIME
(2)数据库字段定义位置
文件位置:frameworks/base/core/java/android/provider/Settings.java文件中:
public static final String DEFAULT_INPUT_METHOD = "default_input_method"; //默认输入法
public static final String ENABLED_INPUT_METHODS = "enabled_input_methods"; //激活使用的输入法
(3)数据库获取输入法命令
$ adb shell settings get secure default_input_method com.sohu.inputmethod.sogou/.SogouIME
$ adb shell settings get secure enabled_input_methods com.sohu.inputmethod.sogou/.SogouIME:com.android.inputmethod.latin/.LatinIME
(4)修改默认的输入法
文件位置:frameworks/base/packages/SettingsProvider/res/values/defaults.xml
修改方法:
<string name="config_default_input_method" translatable="false">com.sohu.inputmethod.sogou/.SogouIME</string> <string name="config_enabled_input_method" translatable="false">com.sohu.inputmethod.sogou/.SogouIME:com.android.inputmethod.latin/.LatinIME</string>
(5)初始化加载设定输入法
文件位置:frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
修改方法:
loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD, R.string.config_default_input_method); loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS,R.string.config_enabled_input_method);
(6)注意
大多数第三方厂商会通过overlay的形式,在其同名defaults.xml中,对config_default_input_method和config_enabled_input_method的值进行覆盖,因此,如果默认输入法修改了不生效,就要查一查是否有overlay目录,将我们设置的值给覆盖了。(一般可以在device和vendor目录下查询 “DEVICE_PACKAGE_OVERLAYS” 关键字确认是否有overlay资源覆盖)