Android修改默认输入法为搜狗方法如下: 1、修改frameworks/base/packages/SettingsProvider/res/values/defaults.xml 添加一行:
- 今天无意间看到公司小贺写了一篇挺不错的文章,拿来学习一下。
- 相信好多朋友都改过默认输入法,我也改过,只不过有一点没注意到,就是切换语言后,默认输入法会不会变的问题。今天看到了这一点,觉得可以拿过来让大家也学学。
- 【声明】本文档均是以marvell项目代码为例,别的平台也可以类似修改
- 修改\frameworks\base\packages\SettingsProvider\res\values\defaults.xml该文件中的<stringname="def_enable_input_methods"> 和<stringname="def_input_method">这两项值便可以将第三方输入法设置为开机默认输入法。如下图所示:
复制代码今天无意间看到公司小贺写了一篇挺不错的文章,拿来学习一下。 相信好多朋友都改过默认输入法,我也改过,只不过有一点没注意到,就是切换语言后,默认输入法会不会变的问题。今天看到了这一点,觉得可以拿过来让大家也学学。
【声明】本文档均是以marvell项目代码为例,别的平台也可以类似修改
修改\frameworks\base\packages\SettingsProvider\res\values\defaults.xml该文件中的<stringname="def_enable_input_methods"> 和<stringname="def_input_method">这两项值便可以将第三方输入法设置为开机默认输入法。如下图所示: 图1中def_enable_input_methods的字面意思为:可用输入法; def_input_method的字面意思为系统默认输入法。从图中可知系统默认输入法为讯飞输入法。 获取上面两个key值的方法如下: 首先将需要预置的apk文件adb install到手机中(或者导入到T卡中安装): 1.勾选要默认使用的输入法,让当前手机的输入法为后安装的第三方输入法。 2.abdshell 进手机后将该文件导出,导出命令为:adb pull data/data/com.android.providers.settings/databases/settings.db  图2 3.用SQLite查看工具打开在secure中Data表中的最下面有enabled_input_methods和default_input_method这两个,来控制系统的默认输入法,将这两个所对应的值填写到defaults.xml文件中。如下图所示:  
图3 4.frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\DatabaseHelper.java中重载输入法 
图4 经过如上的操作就完成了开机默认输入法为第三方输入法。我们大部分的同事都只修改到这里,是可以达到目的,可是还有个小问题。 因为当切换系统语言后,输入法会又变回android原生的输入法英文输入法,即androidkeyboard,源码的模块为LatinIME,后来经过marvell人员的技术支持,在/frameworks/base/core/java/com/android/internal/inputmethod/InputMethodUtils.java该文件内如下图位置 
加入如下代码来对默认输入法进行判断:
if("com.baidu.input".equals(imi.getPackageName())) {
return true;
}
这样就避免了在切换系统语言时输入法发生改变的状况。 【注意】string的key值一定要与代码中的值相同。 这样就实现了设置默认输入法的修改,如有问题请在后面回复。
最后提醒大家的是,在修改后如果没有效果,一定要检查是否在别的路径下有单拉的文件。前几天改默认输入法一直无法成功,就是因为在vender路径下有单拉的文件导致。
|