在android中,系统默认输入键盘是US,但是不同国家有不同的常用输入键盘,US 一般普遍常用,因此将US 和 常用输入键盘设定为默认的键盘切换。(以Russia为例)
1)在frameworks/base/packages/SettingsProvider/res/values/defaults.xml 中添加:
<string name="def_input_method" translatable="false">com.android.inputmethod.latin/.LatinIME;1983547218;-921088104</string>
com.android.inputmethod.latin/.LatinIME — 系统最初默认值
-921088104 — US 键盘输入 id
1983547218 — Russia 键盘输入 id
id 值可能还可以通过别的获取方式指定,还没找到更好的方法,只能笨拙地实现基本功能先。
不同输入键盘的 id 值可以在/packages/apps/Settings/src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java中获取,updateSubtypesPreferenceChecked方法中bhashCode = String.valueOf(subtype.hashCode()) 可读取到 id。
2)在 frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java 中添加:
loadStringSetting(stmt, Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
R.string.def_location_providers_allowed);
loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS,
R.string.def_input_method);// default input method
loadBooleanSetting(stmt, Settings.Secure.ASSISTED_GPS_ENABLED,
R.bool.assisted_gps_enabled);