當(dāng)系統(tǒng)的語(yǔ)言改變時(shí),選擇的輸入法會(huì)變成默認(rèn)輸入法:
實(shí)現(xiàn)的過程在:InputMethodManagerService.java中的:
mContext.registerReceiver(// 這里對(duì)語(yǔ)言改變廣播的監(jiān)聽。
??????????????? new BroadcastReceiver() {
??????????????????? @Override
??????????????????? public void onReceive(Context context, Intent intent) {
??????????????????????? synchronized(mMethodMap) {
??????????????????????????? checkCurrentLocaleChangedLocked();//當(dāng)接收到語(yǔ)言改變發(fā)送的廣播時(shí)執(zhí)行方法
??????????????????????? }
??????????????????? }
??????????????? }, filter);
?????? ?
在checkCurrentLocaleChangedLocked()方法中:
有個(gè)updateFromSettingsLocked()方法
updateFromSettingsLocked()這個(gè)方法:
?? 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);//獲取默認(rèn)輸入法
??????? // 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));//設(shè)置當(dāng)前輸入法為默認(rèn)輸入法。
??????????? } 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);
??????? }
??? }
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

