如何实现出厂时,输入法默认是勾选的 & 如何修改默认输入法

来源:互联网 发布:外贸口语书籍推荐,知乎 编辑:程序博客网 时间:2024/06/08 18:01
[如何实现出厂时,输入法默认是勾选的]
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
因为默认enable的输入法都被保存在Settings.Secure.ENABLED_INPUT_METHODS
所以只用修改他的默认值即可.
以默认勾选latin和sogou为例,
修改DatabaseHelper.java (/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java)
1.先定义 private static final String defaultEnableInputMethods = "com.android.inputmethod.latin/.LatinIME:com.sohu.inputmethod.sogou/.SogouIME";
2.在 private void loadSecureSettings(SQLiteDatabase db) {......}中添加如下内容:

 loadSetting(stmt,Settings.Secure.ENABLED_INPUT_METHODS,defaultEnableInputMethods);

如果要添加多个输入法,则defaultEnableInputMethods的定义为多个输入法的id,输入法之间用:隔开.



[如何修改默认输入法]
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一、适用于Android V4.0之前的版本:
1. 安装需要用的默认输入法(.apk)到system/app
2. 修改文件 frameworks/base/packages/SettingsProvider/res/values/defaults.xml

 <string name="default_input_method" translatable="false">默认输入法 ID</string>

输入法 ID,如 PinyinIME 为:com.android.inputmethod.pinyin/.PinyinIME

二、适用于Android V4.0及之后的 版本:
1. 需要提前将用到的默认输入法(.apk)内置到系统中
2. 修改文件 DatabaseHelper.java (/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java)
请将默认的初始化部分code删除,即将下面的code都删除掉。

 String defaultIME = IMEFeatureOption.DEFAULT_INPUT_METHOD;

 Log.i(TAG, "defaultIME : " + defaultIME);

 if (defaultIME != null) {

     StringBuffer strBuffer = new StringBuffer(defaultIME);

     int lastDotPos = defaultIME.lastIndexOf(".");

     String strInsert = "/";

     strBuffer.insert(lastDotPos, strInsert);

     loadSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,

     strBuffer.toString());

 } else {

         Log.i(TAG, "default IME from IMEFeatureOption is null!!");

 }

然后在删除的后面添加

 //这里修该默认enable的输入法

 loadSetting(stmt,Settings.Secure.ENABLED_INPUT_METHODS,

        "com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME");


 //这里修改默认选中的输入法

 loadSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,

        "com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME");



原创粉丝点击