文章

Android6.0修改默认输入法

文章目录

系统内置了搜狗输入法,但有时候系统起来后输入法不是搜狗,客户很捉急,因此只好百度了一下下,参考大神们的教程。

我这使用的代码是Android 6.0的,在SettingsProvider没有找到配置项,我记得以前Android 4.2上是有写配置项的,可Android 6.0中竟然没有,,无语了。(SettingsProvider这块代码目前没有看过,后续有机会瞧一瞧)

废话少说,直接进入正题。

1、新增输入法默认值

路径:android_6_0_frameworks\base\packages\SettingsProvider\res\values\defaults.xml

在defaults.xml新增一个string

    <string name="default_Enable_Input_Methods">com.android.inputmethod.latin/.LatinIME:<span style="color: #ff0000;">com.sohu.inputmethod.sogou/.SogouIME</span></string>

上面红色部分就是输入法的服务,我用的是搜狗。

这里附上国内比较大众的输入配置

百度:com.baidu.input/.ImeService
讯飞:com.iflytek.inputmethod/.FlyIME
腾讯:com.tencent.qqpinyin/.QQPYInputMethodService
谷歌:com.google.android.inputmethod.pinyin/.PinyinIME
搜狗:com.sohu.inputmethod.sogou/.SogouIME
触宝:com.cootek.smartinput5/.TouchPalIME

需要不同的输入法只要修改红色部分即可。

2、输入法默认值写入系统

路径:android_6_0_frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\DatabaseHelper.java

在loadSecureSettings()方法中新增红色部分代码即可。

    private void loadSecureSettings(SQLiteDatabase db) {
        SQLiteStatement stmt = null;
        try {
             ......
            <span style="color: #ff0000;">【把默认值写入系统数据库】
            loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS,
                    R.string.default_Enable_Input_Methods);

</span>        } finally {
            if (stmt != null) stmt.close();
        }
    }

注意上面红色字体,这里使用的是<span style="color: #ff0000;">Settings.Secure.ENABLED_INPUT_METHODS</span>下面简单说说这两的区别

loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS, R.string.def_input_method);

loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD, R.string.def_input_method);

这样建立起数据库,属性为ENABLED_INPUT_METHODS设置完后,这样在安卓settings中,对应的输入法是打钩的,设置多个就打钩多个;属性为DEFAULT_INPUT_METHOD设置完后,其对应的输入法就是为默认的输入法了。

网上有说,更改语言后输入法也会被改变,这个我这里没有试到。如果你的有出现,可以文章末尾的链接修改。

本文参考《Android7.0更换系统默认输入法》和《Android 修改默认输入法

1 0
发表评论