Platform: ROCKCHIP
OS: Android 6.0
Kernel: 3.10.92
之前遇到默认输入法修改有问题,这里对输入法服务开机初始化部分做个小结.
startOtherServices -> SystemServer.java
new InputMethodManagerService ->
IWindowManager.Stub.asInterface(ServiceManager.getService(Context.WINDOW_SERVICE)); //和windowsmanagerservice建立关系.
new InputMethodSettings InputMethodUtils.java
mSettings.getSelectedInputMethod -> //获取系统默认输入法, SettingsProvider会提前解析默认配置,然后写入数据库,如果没有设置,那么就会返回空.
getSelectedInputMethod -> InputMethodUtils.java
Settings.Secure.getStringForUser(...,Settings.Secure.DEFAULT_INPUT_METHOD, ...);
buildInputMethodListLocked ->
new ComponentName //循环读取系统中所有可用的输入法
new InputMethodInfo //输入法各自用此结构保存信息.
InputMethodUtils.getDefaultEnabledImes -> InputMethodUtils.java //当没有设置输入法时候会自动选择一个,
OS: Android 6.0
Kernel: 3.10.92
之前遇到默认输入法修改有问题,这里对输入法服务开机初始化部分做个小结.
startOtherServices -> SystemServer.java
new InputMethodManagerService ->
IWindowManager.Stub.asInterface(ServiceManager.getService(Context.WINDOW_SERVICE)); //和windowsmanagerservice建立关系.
new InputMethodSettings InputMethodUtils.java
mSettings.getSelectedInputMethod -> //获取系统默认输入法, SettingsProvider会提前解析默认配置,然后写入数据库,如果没有设置,那么就会返回空.
getSelectedInputMethod -> InputMethodUtils.java
Settings.Secure.getStringForUser(...,Settings.Secure.DEFAULT_INPUT_METHOD, ...);
buildInputMethodListLocked ->
new ComponentName //循环读取系统中所有可用的输入法
new InputMethodInfo //输入法各自用此结构保存信息.
InputMethodUtils.getDefaultEnabledImes -> InputMethodUtils.java //当没有设置输入法时候会自动选择一个,