系统语言改变时,输入法变成默认输入法分析
来源:互联网 发布:学程序员 编辑:程序博客网 时间:2024/05/01 15:08
当系统的语言改变时,选择的输入法会变成默认输入法:
实现的过程在: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);
}
}
实现的过程在: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);
}
}
- 系统语言改变时,输入法变成默认输入法分析
- 强制改变默认输入法
- 切换语言时,默认的输入法请为对应输入法
- 修改系统默认输入法
- 设置系统默认输入法为
- 更改Android系统默认输入法
- Android替换系统默认输入法
- 将自定义输入法设置为系统默认输入法
- Android 系统添加输入法并设置为默认输入法
- android 设置 切换语言恢复默认输入法
- Latin输入法怎么默认勾选几种语言
- android N0版本默认输入法语言
- 切换输入法默认语言为英文
- 如何修改系统的默认输入法?
- Android4.0 设置系统默认输入法
- Android系统默认输入法的修改
- Android系统默认输入法的修改
- Android替换/修改系统默认输入法
- Category
- virsh kvm xen xm qemu libvirt virt-manager概述
- pivot and unpivot queries in 11g
- UVALive - 6039
- WinSock五种I/O模型的性能分析
- 系统语言改变时,输入法变成默认输入法分析
- c#获取拼音码
- Java内部类与final关键字详解
- 关于SQLSERVER 事物的运用(1)普通事物
- 10款优秀的HTML5开发工具
- 当滚动要超过元素时固定元素和恢复
- Java.Web - Servlet 随笔
- WebService服务接口
- android面试题