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");//这里修改默认选中的输入法



  • 相关阅读:
    83. Remove Duplicates from Sorted List
    35. Search Insert Position
    96. Unique Binary Search Trees
    94. Binary Tree Inorder Traversal
    117. Populating Next Right Pointers in Each Node II
    116. Populating Next Right Pointers in Each Node
    111. Minimum Depth of Binary Tree
    169. Majority Element
    171. Excel Sheet Column Number
    190. Reverse Bits
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3400242.html
Copyright © 2011-2022 走看看