Andoid7.1系统 Framework中默认输入法修改笔录

默认输入法修改:

1.  android\ framework \base\packages\SettingsProvider\res\values\defaults .xml

增加

<string name=" def_input_method ">包名/类名</string>

字段其目的是定义一个字符串常量用以记录默认输入法的ID[具体由包名和类名组合而成]例如com.android.inputmethod.pinyin/.PinyinIME

[若是编译镜像需求则该字段还需在overlay中添加]


2.  android\framework \base\packages\SettingsProvider\src\com\android\providers\settings\DatabaseHelper. java

    private void loadSecureSettings (SQLiteDatabase db)方法中增加

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

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

    其目的是将默认输入法的信息写入到系统配置数据库中  


1.2步骤完成后重新编译SettingsProvider.apk即可完成默认输入法修改,不过切换系统语言后可能会变回系统默认的。因为InputMethodManagerService有个广播接收器当语言发生变化后会重新reset一下因此有了第三步


3.  android\framework\base\services\core\ java\com\android\server\InputMethodManagerService .java

public InputMethodManagerService (Context context)方法中屏蔽广播接收器中的语言切换恢复键盘操作

具体地方

final IntentFilter filter = new IntentFilter();

filter.addAction(Intent.ACTION_LOCALE_CHANG);

mContext.registerReceiver(

    new BroadcastReceiver() {

    @Override

    public void onReceive(Context context, Intent intent) { synchronized (mMethodMap)

           //resetStatelfCurrentLocaleChangedLocked ();       //屏蔽广播接收器中的语言切换恢复键盘揉作

    ),filter);

当然可以修改相关方法内部逻辑使其reset时还是以项目需求的输入法为reset的输入法。具体不再说明,有兴趣的可以自己去跟踪相关方法代码。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值