1. 程式人生 > >Android 7.0 刪除原生輸入法(AOSP)&更換系統預設輸入法

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