Android 7.0 删除原生输入法(AOSP)&更换系统默认输入法

一、删除原生输入法

  • 1 . 删除build/target/product/core.mk 文件下的原生输入法:
PRODUCT_PACKAGES += \
    BasicDreams \
    BlockedNumberProvider \
    #LatinIME \  删除
    Calendar \
    CalendarProvider \
    ...
  • 2 . 删除device/qcom/common/base.mk 文件下的原生输入法:
PRODUCT_PACKAGES := \
    AccountAndSyncSettings \
    DeskClock \
    #LatinIME \  删除
    AlarmProvider \
    Bluetooth \
    Calculator \
    ...

二、添加系统默认输入法

  • 1 . 将第三方输入法APK编译到system/app 目录下:
  • 2 . 在 frameworks/base/core/res/res/values/config.xml 添加一个需要的输入法属性(实例为讯飞):
<string name="config_default_input_method" translatable="false">
        com.iflytek.inputmethod/.FlyIME</string>
  • 3 . 在frameworks/base/services/java/com/android/server/InputMethodManagerService.java 里添加:
void buildInputMethodListLocked(boolean resetDefaultEnabledIme) {
    ...
    //add start
    String defaultIme = Settings.Secure.getString(mContext.getContentResolver(),
        Settings.Secure.DEFAULT_INPUT_METHOD);

    if (defaultIme == null) {
       final Resources res = mContext.getResources();
           try {
               //frameworks\base\core\res\res\values\config.xml
               String myIME = res.getString(com.android.internal.R.string.config_default_input_method);
                if (myIME != null && myIME.length() > 0) {
                    Settings.Secure.putString( mContext.getContentResolver(),
                         Settings.Secure.DEFAULT_INPUT_METHOD, myIME);
                }
            } catch (Exception e) {
            }
        }
    // add end
    ...
  • 4 .常见输入法的包名和类名
百度:com.baidu.input/.ImeService
讯飞:com.iflytek.inputmethod/.FlyIME
腾讯:com.tencent.qqpinyin/.QQPYInputMethodService
谷歌:com.google.android.inputmethod.pinyin/.PinyinIME
搜狗:com.sohu.inputmethod.sogou/.SogouIME
触宝:com.cootek.smartinput5/.TouchPalIME

猜你喜欢

转载自blog.csdn.net/xiao_shiyi128/article/details/80015798