为什么有时会切换系统语言,并相应地切换输入法
当系统具有Google拼音输入法(拼音输入法)和android键盘输入法(拉丁语输入法)时,系统的输入法不是第三方输入法。
此时切换系统语言:
切换到中文时,无论是拼音输入法(或未选中拼音输入法),现在都会自动切换到Google中文输入法
切换到英语时,无论之前是否使用拉丁输入法(或未选中拉丁输入法),它现在都会自动切换到android键盘输入法
原因:
系统完成语言翻译后,
首先,IME服务将通过buildInputMethodListLocked()检查所有未检查的系统输入方法,

然后,IME服务(InputMethodManagerServices.Java)将收到ACTION_LOCALE_CHANGED的广播,
最终的IntentFilter过滤器= new IntentFilter();
filter.addAction(Intent.ACTION_LOCALE_CHANGED);
mContext.registerReceiver(
new BroadcastReceiver(){
@Override
public void onReceive(上下文上下文,意图意图){

已同步(mMethodMap){
resetStateIfCurrentLocaleChangedLocked();
}
}
},过滤器);
}
然后,将使用resetStateIfCurrentLocaleChangedLocked()方法--->最后调用resetDefaultImeLocked(),

在resetDefaultImeLocked()中,将判断它是否是SYSTEM IME,并最终通过setSelectedInputMethodAndSubtypeLocked()设置当前系统的输入法。
通过语言开关更改输入法。
注意:如果当前输入法是第三方,则在上述语言切换后,输入法将不会更改。因为直接阻止对resetDefaultImeLocked()中是否为系统输入法的判断。
在resetDefaultImeLocked方法的开头,是要做出判断:
if(mCurMethodId!= null &&!InputMethodUtils.isSystemIme(mMethodMap.get(mCurMethodId))){
返回;
}
这是android的原始设计。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-354595-1.html
我们就出兵叙利亚对美国支持武装份子往死里狂轰滥炸出一口窝囊气
婚姻制度实际上在快速走向消亡
请问