9.0 修改默认键盘
输入法ID
Android端输入法软件主要标识为输入法ID,用户配置相应的输入法ID,达到切换输入法的目的。
常见的输入法ID
com.android.inputmethod.latin/.LatinIME (缩写)
com.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME (完整)
com.sohu.inputmethod.sogou.xiaomi/.SogouIME (搜狗输入法小米版)
-
com.android.inputmethod.latin/.LatinIMEAndroid原生默认的输入法
输入法ID的获取
输入法ID的获取方式有多种,此处示范一种获取方法:
-
安装要预置的输入法
-
shell终端中输入命令
ime list -a可列出所有输入法的列表 -
找到对应的输入法ID
设置流程
此处以第三方输入法LeanKeyKeyboardPro为例
预置APK
Android默认的输入法源码目录为:packages/inputmethods/ 该目录已存在两种输入法LatinIME、OpenWnn。
建立输入法目录LeanKeyKeyboardPro,将独立输入法apk放置其中并建立Android.mk文件,用于源码编译时以预置apk方式编译进系统。
Android.mk示例:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed
LOCAL_MODULE := LeanKeyKeyboardPro
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := .apk
LOCAL_MODULE_TARGET_ARCH := arm
my_src_arch := $(call get-prebuilt-src-arch,$(LOCAL_MODULE_TARGET_ARCH))
LOCAL_PREBUILT_JNI_LIBS_arm :=
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_DEX_PREOPT := false
include $(BUILD_PREBUILT)
将该包添加到编译脚本中
配置默认输入法
Android系统的默认输入法是读取SettingProvide的数据库中配置的输入法ID,进行设置的。
-
建立输入法ID对应的String文本,文件目录为
frameworks\base\packages\SettingsProvider\res\values\defaults.xml,在该文件中添加了新的输入法ID:com.liskovsoft.leankeyboard/.ime.LeanbackImeService,赋值给了def_default_input_method,def_enabled_input_methods。-
def_default_input_method在Android系统初始化的时候,会将该标签对应的输入法ID赋值给Settings.Secure.DEFAULT_INPUT_METHOD,该变量将会把输入法ID存储到SettingProvider的数据库中,以此做到设置默认输入法的功效。
-
def_enabled_input_methods该值标识系统使能的输入法,可设置多个输入法ID,多个输入法之间采用{ : }分隔
-
-
配置输入法默认值
文件路径为:frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
private void loadSecureSettings(SQLiteDatabase db) {
...
loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,
R.string.def_default_input_method);
loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS,
R.string.def_enabled_input_methods);
...
}
该处的方法表示,系统在初始化的时候会将string对应的输入法ID赋值到数据库的属性中。
至此修改系统默认输入法的步骤已完成。
输入法测试
-
adb shell ime list -a列出本设备支持输入法
-
adb shell settings get secure default_input_method获取默认输入法,用于验证默认输入法是否设置成功
-
adb shell settings get secure enabled_input_methods获取使能的输入法列表
-
adb shell ime enable com.liskovsoft.leankeyboard/.ime.LeanbackImeService使能特定输入法
-
adb shell ime set com.liskovsoft.leankeyboard/.ime.LeanbackImeService设置当前输入法
This message is used to verify that this feed (feedId:87310356539807744) belongs to me (userId:78433846862367744). Join me in enjoying the next generation information browser follow.is.