在Android系统固件中修改默认输入法


最近有一个需求,需要预置一个搜狗输入法,记录步骤如下:

在frameworks的/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java中找到静态代码块:

static {
        mValidTables.add(TABLE_SYSTEM);
        mValidTables.add(TABLE_SECURE);
//-----------------省略一大堆---以下为关键代码---------------//
if(isSogouInputMethodExist()){
loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,
R.string.def_input_method_sogou);
}
//----------在方法体内加上该部分代码-------//

另外在类中增加一个方法用于客制化:

  private boolean isSogouInputMethodExist(){
     boolean isSogouInputMethodExist =SystemProperties.getBoolean("ro.sys.sogouinput", false);
   return isSogouInputMethodExist;
}

然后在同应用SettingsProvider中的SettingsProvider/res/values/defaults.xml的最末尾添加

<!-- Default for Settings.System.DEFAULT_INPUT_METHOD-->

<string name="def_input_method_sogou" translatable="false">com.sohu.inputmethod.sogouoem/.SogouIME</string>

至此,可以使用“ro.sys.sogouinput”该属性进行控制是否设置为默认输入法,客制化不再赘述。

声明:TIL|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA[ZH]协议进行授权

转载:转载请注明原文链接 - 在Android系统固件中修改默认输入法


Life is very interesting. In the end, some of your greatest pains become your greatest strengths.