當系統的語言改變時,選擇的輸入法會變成默認輸入法:
實現的過程在:InputMethodManagerService.java中的:
mContext.registerReceiver(// 這里對語言改變廣播的監聽。
??????????????? new BroadcastReceiver() {
??????????????????? @Override
??????????????????? public void onReceive(Context context, Intent intent) {
??????????????????????? synchronized(mMethodMap) {
??????????????????????????? checkCurrentLocaleChangedLocked();//當接收到語言改變發送的廣播時執行方法
??????????????????????? }
??????????????????? }
??????????????? }, filter);
?????? ?
在checkCurrentLocaleChangedLocked()方法中:
有個updateFromSettingsLocked()方法
updateFromSettingsLocked()這個方法:
?? void updateFromSettingsLocked() {
??????? // We are assuming that whoever is changing DEFAULT_INPUT_METHOD and
??????? // ENABLED_INPUT_METHODS is taking care of keeping them correctly in
??????? // sync, so we will never have a DEFAULT_INPUT_METHOD that is not
??????? // enabled.
??????? String id = Settings.Secure.getString(mContext.getContentResolver(),
??????????????? Settings.Secure.DEFAULT_INPUT_METHOD);//獲取默認輸入法
??????? // There is no input method selected, try to choose new applicable input method.
??????? if (TextUtils.isEmpty(id) && chooseNewDefaultIMELocked()) {
??????????? id = Settings.Secure.getString(mContext.getContentResolver(),
??????????????????? Settings.Secure.DEFAULT_INPUT_METHOD);
??????? }
??????? if (!TextUtils.isEmpty(id)) {
??????????? try {
??????????????? setInputMethodLocked(id, getSelectedInputMethodSubtypeId(id));//設置當前輸入法為默認輸入法。
??????????? } catch (IllegalArgumentException e) {
??????????????? Slog.w(TAG, "Unknown input method from prefs: " + id, e);
??????????????? mCurMethodId = null;
??????????????? unbindCurrentMethodLocked(true);
??????????? }
??????????? mShortcutInputMethodsAndSubtypes.clear();
??????? } else {
??????????? // There is no longer an input method set, so stop any current one.
??????????? mCurMethodId = null;
??????????? unbindCurrentMethodLocked(true);
??????? }
??? }
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
