zoukankan      html  css  js  c++  java
  • 系统语言改变时,输入法变成默认输入法分析

    当系统的语言改变时,选择的输入法会变成默认输入法:
    实现的过程在: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);
            }
        }

  • 相关阅读:
    MVC<2:路由映射原理2>
    分支限界>0/1背包 小强斋
    分支限界>装载问题 小强斋
    解空间树搜索 及 最优解 小强斋
    算法>NP难度和NP完全的问题 小强斋
    算法>NP难度和NP完全的问题 小强斋
    分支限界>装载问题 小强斋
    分支限界>0/1背包 小强斋
    分支限界>15谜问题 小强斋
    分支限界>15谜问题 小强斋
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3072109.html
Copyright © 2011-2022 走看看