android修改默认输入法

来源:互联网 发布:mp5冲锋枪知乎 编辑:程序博客网 时间:2024/04/28 14:12

今天无意间看到公司小贺写了一篇挺不错的文章,拿来学习一下。

相信好多朋友都改过默认输入法,我也改过,只不过有一点没注意到,就是切换语言后,默认输入法会不会变的问题。今天看到了这一点,觉得可以拿过来让大家也学学。

【声明】本文档均是以marvell项目代码为例,别的平台也可以类似修改

修改\frameworks\base\packages\SettingsProvider\res\values\defaults.xml该文件中的<stringname="def_enable_input_methods"> 和<stringname="def_input_method">这两项值便可以将第三方输入法设置为开机默认输入法。如下图所示:

 

图1

 

图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路径下有单拉的文件导致。


0 0
原创粉丝点击