zoukankan      html  css  js  c++  java
  • Android 如何修改默认输入法

    前言
             欢迎大家我分享和推荐好用的代码段~~
    声明
             欢迎转载,但请保留文章原始出处:
             CSDN:
    http://www.csdn.net
             雨季o莫忧离:http://blog.csdn.net/luckkof

    正文

     

     

    一、适用于ICS(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


    二、适用于 ICS、JB、JB2及之后的 版本
    1. 需要提前将用到的默认输入法(.apk)内置到系统中(请参考如何将APK预置进系统)

    2. 修改文件 mediatek/config/${Project}/ProjectConfig.mk
    将宏 DEFAULT_INPUT_METHOD 的值设置为所需的输入法;

    比如 PinyinIME,则设为:DEFAULT_INPUT_METHOD = com.android.inputmethod.pinyin.PinyinIME

    这个值是输入法源码中,包含InputMethodService子类的那个包名.实现InputMethodService的子类的类名。这里比log中打印的完整类名少一个"/",请注意

    补充说明

    上面的修改方法只适用于默认输入法为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.ENABLED_INPUT_METHODS,
       "com.google.andr
    oid.inputmethod.latin/com.android.inputmethod.latin.LatinIME"); //这里修该默认enable的输入法

     loadSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,
       "com.google.andr
    oid.inputmethod.latin/com.android.inputmethod.latin.LatinIME");//这里修改默认选中的输入法



  • 相关阅读:
    2008年6月6日今天终于调回公司本部啦,记录历史的一天。
    动易安全开发手册
    今天开机后发现有些图标变了样(图标变灰色),可是功能都能用
    用CFile类简单读写文件
    【转】动态链接库的静态链接导致程序的DLL劫持漏洞借助QQ程序xGraphic32.dll描述
    失败的人只有一种,就是在抵达成功之前放弃的人
    ListControl
    [转贴]仅通过崩溃地址找出源代码的出错行
    tinyxml文档
    得到程序当前UAC的执行权限,高 中 低
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3400242.html
Copyright © 2011-2022 走看看