Android 内置第三方输入法设为系统默认输入法
在开发工作中经常会遇到指定第三方输入法为系统默认输入法的项目需求,为此整理了设置系统默认输入法的修改方法,主要总结两种方法,一种是基于存在"def_input_ime"变量的基础之上的修改方法,另一种是当系统中无"def_input_ime"变量时的修改方法
具体修改点如下:
首先在/frameworks/base/packages/SettingsProvider/res/values/defaults.xml 检索"def_input_ime"变量,若存在即采用第一种方法,否则直接略过第一种方法看第二种
第一种方法:
在/frameworks/base/packages/SettingsProvider/res/values/defaults.xml中修改:
<string name="def_input_ime" translatable="false">com.iflytek.inputmethod/.FlyIME</string>
<string name="def_enable_input_ime" translatable="false">@string/def_input_ime</string>
"com.iflytek.inputmethod/.FlyIME"为第三方输入法ID,形式为包名/类名,此处用讯飞输入法作为示例
第二种方法:
在/frameworks/base/packages/SettingsProvider/res/values/defaults.xml中增加:
<string name="def_input_ime" translatable="false">com.iflytek.inputmethod/.FlyIME</string>
<string name="def_enable_input_ime" translatable="false">@string/def_input_ime</string>
在/frameworks/base/packages/SettingsProvider/src/com/Android/providers/settings/DatabaseHelper.java的loadSecureSettings()中增加:
loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,R.string.def_input_ime);
loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS,R.string.def_enable_input_ime);