微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 如何修改默认输入法

如何修改默认输入法

时间:10-02 整理:3721RD 点击:
[Description]
如何修改默认输入法?
[Solution]
一、适用于ICS(androidV4.0)之前的版本:
1.安装需要用的默认输入法(.apk)到system/app
2.修改文件php?mod=tag&id=6090" target="_blank" class="relatedlink">Frameworks/base/packages/SettingsProvider/res/values/defaults.xml
<string name="default_input_method" translatable="false">默认输入法 ID
</string>
红色标记表示输入法 ID,比如 PinyinIME 为:com.android.inputmethod.pinyin/.PinyinIME
二、适用于ICS、JB、JB2、KK的版本:
1.需要提前将用到的默认输入法(.apk)内置到系统中(请参考如何将APK预置进系统)
2.修改文件mediatek/config/${Project}/ProjectConfig.mk
将宏DEFAULT_INPUT_METHOD的值设置为所需的输入法;
比如PinyinIME,则设为:
DEFAULT_INPUT_METHOD=com.android.inputmethod.pinyin.PinyinIME
这个值是输入法源码中,包含InputMethodService子类的那个包名.实现InputMethodService的子类的类名。这里比log中打印的完整类名少一个
"/",请注意
补充说明:
KK的版本不需要一下修改:
上面的修改方法只适用于默认输入法为com.android.inputmethod.pinyin/.PinyinIME这种格式的输入
法(即反斜杠后面就是类名的情况),
对于com.google.andr
oid.inputmethod.latin/com.android.inputmethod.latin.LatinIME (即反斜杠后面是完整类名的情况),
这种情况是不支持修改mediatek/config/${Project}/ProjectConfig.mk
里面DEFAULT_INPUT_METHOD的方法来设置默认输入法的。
以com.google.andr
oid.inputmethod.latin/com.android.inputmethod.latin.LatinIME 为例
请改用下面的方法修改,在SettingsProvider 的DatabaseHelper.java中

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!");
}
请将默认的初始化部分code删除,即将 下面的code都删除掉。
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!");
}
然后在删除的后面添加
loadSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,
"com.google.andr
oid.inputmethod.latin/com.android.inputmethod.latin.LatinIME");//这里修改默认选中的输入

三、适用于 L的 版本
请在APK正确预置的前提下,再修改如下:
在InputMethoDMAnagerService的systemRunning()函数, if (!mImeSelectedOnBoot) 的分支中修改如下
if (!mImeSelectedOnBoot) {
Slog.w(TAG, "Reset the default IME as \"Resource\" is ready here.");
// String preInstalledImeName = SystemProperties.get("ro.mtk_default_ime");
String preInstalledImeName = "第三方输入法的完整包名ID";
或者直接修改build.prog中的ro.mtk_default_ime属性值,也可在system.prog中增加此属性值。只要修改完后,adb
shell getprop ro.mtk_default_ime能获取到正确的预置输入法ID即可。

大神,这个是不是已经发过了?

啊哈哈 是吗 没留意耶

<bool name="config_disableUsbPermissionDialogs">true</bool>,大侠知道这句是什么意思?急急急

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top