最近研究了一个新技术,就是将自定义的输入法设置为系统默认的输入法,需要修改安卓源码
下面是详细步骤
首先将自定义输入法的包放到 vonder/xxx/apps/自定义输入法(package),添加Android.mk文件
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := helloIme
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_STATIC_JAVA_LIBRARIES := layoutlib
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_CERTIFICATE := platform
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
include $(BUILD_PACKAGE)
然后先编译一下自定义输入法 mmm vendor/xxx/apps/自定义输入法
编译完成之后
将这个包加到 device/ti/blaze_tablet/device.mk 文件中
PRODUCT_PACKAGES += \
helloIme
修改framework代码
1. frameworks\base\packages\SettingsProvider\res\values\defaults.xml 文件中修改默认输入法为搜狗输入法
<string name="config_default_input_method" translatable="false">com.sohu.inputmethod.sogou/.SogouIME
</string>
<string name="def_enabled_input_methods" translatable="false">com.sohu.inputmethod.sogou/.SogouIME
</string>
//com.sohu.inputmethod.sogou/.SogouIME此为搜狗输入法的ID,若要自定义输入法,修改ID即可
2. frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\DatabaseHelper.java
在loadSecureSettings()中增加一条语句,制定默认使能的输入法
loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,R.string.config_default_input_method);
loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,R.string.def_enabled_input_methods);