1. 程式人生 > >android修改預設輸入法

android修改預設輸入法

今天無意間看到公司小賀寫了一篇挺不錯的文章,拿來學習一下。

相信好多朋友都改過預設輸入法,我也改過,只不過有一點沒注意到,就是切換語言後,預設輸入法會不會變的問題。今天看到了這一點,覺得可以拿過來讓大家也學學。

【宣告】本文件均是以marvell專案程式碼為例,別的平臺也可以類似修改

修改\frameworks\base\packages\SettingsProvider\res\values\defaults.xml該檔案中的<stringname="def_enable_input_methods"> 和<stringname="def_input_method">這兩項值便可以將第三方輸入法設定為開機預設輸入法。如下圖所示:

 

圖1

圖1中def_enable_input_methods的字面意思為:可用輸入法;

def_input_method的字面意思為系統預設輸入法。從圖中可知系統預設輸入法為訊飛輸入法。

獲取上面兩個key值的方法如下:

首先將需要預置的apk檔案adb install到手機中(或者匯入到T卡中安裝):

1.勾選要預設使用的輸入法,讓當前手機的輸入法為後安裝的第三方輸入法。

2.abdshell 進手機後將該檔案匯出,匯出命令為:adb pull data/data/com.android.providers.settings/databases/settings.db

 

圖2

3.用SQLite檢視工具開啟在secure中Data表中的最下面有enabled_input_methods和default_input_method這兩個,來控制系統的預設輸入法,將這兩個所對應的值填寫到defaults.xml檔案中。如下圖所示:

 


圖3

4.frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\DatabaseHelper.java中過載輸入法

 

圖4

經過如上的操作就完成了開機預設輸入法為第三方輸入法。我們大部分的同事都只修改到這裡,是可以達到目的,可是還有個小問題。

因為當切換系統語言後,輸入法會又變回android原生的輸入法英文輸入法,即androidkeyboard,原始碼的模組為LatinIME,後來經過marvell人員的技術支援,在/frameworks/base/core/java/com/android/internal/inputmethod/InputMethodUtils.java該檔案內如下圖位置


加入如下程式碼來對預設輸入法進行判斷:

if("com.baidu.input".equals(imi.getPackageName())) {

         return true;
  }


這樣就避免了在切換系統語言時輸入法發生改變的狀況。

【注意】string的key值一定要與程式碼中的值相同。

這樣就實現了設定預設輸入法的修改,如有問題請在後面回覆。

最後提醒大家的是,在修改後如果沒有效果,一定要檢查是否在別的路徑下有單拉的檔案。前幾天改預設輸入法一直無法成功,就是因為在vender路徑下有單拉的檔案導致。


相關推薦

android修改預設輸入法

今天無意間看到公司小賀寫了一篇挺不錯的文章,拿來學習一下。 相信好多朋友都改過預設輸入法,我也改過,只不過有一點沒注意到,就是切換語言後,預設輸入法會不會變的問題。今天看到了這一點,覺得可以拿過來讓大

Android系統預設輸入法修改

1.  frameworks\base\packages\SettingsProvider\res\values\defaults.xml 檔案中修改預設輸入法為搜狗輸入法         <stringname="config_default_input_metho

Android原始碼修改預設輸入法

   前一陣子,應泰國客戶需求,需要在Android TV系統定製一個多語言輸入法,至少支援中、英、泰三種語言。拿到這個任務,對於至今還是小白的我來說,當然先去google一下有沒有大神專門做過符合要求的輸入法應用。很遺憾,網上移動終端倒是有不少滿足需求的輸入法,而且做得還

android 修改預設logcat列印級別

軟體版本:Android6.0 硬體平臺:MTK6797       關於系統預設的日誌級別問題,涉及到了一個系統屬性,就是persist.log.tag,那麼這個屬性是在哪裡初始化定義的呢? 在mtk原始碼的vendor/mediatek/p

android修改預設的logo

以freescale為例: 1.修改uboot啟動時的Freescale字樣 可以在u-boot中board/freescale/common/fsl_bmp_600x400.c改變影象。具體步驟如下: (1)   準備一張bmp格式的圖片,最好畫素是600x400的

Android修改預設瀏覽器為其他瀏覽器

[java] view plain copy public class Mai

Android替換/修改系統預設輸入法

各大輸入法的服務 ro.mtk_default_ime=com.tencent.qqpinyin.QQPYInputMethodService//預設qq輸入法 ro.mtk_default_ime=com.sohu.inputmethod.sogou.SogouIME//

android 全域性修改預設字型 沒有效果 填坑

最近有個需求要修改android app預設字型。網上有很多方法,但是最坑的是都沒有效果,但是最後還是解決了,不過不知道是什麼原因,如果知道的話歡迎留言(謝謝大家) 解決方案: 新增字型(.ttf)到工程目錄assets下, 我的是在assets在新建了一個fonts包。注意assets

修改Android系統預設時間

一 : 修改Android系統預設時間 原始碼路徑:frameworks/base/services/java/com/android/server/SystemServer.java 主要變數EARLIEST_SUPPORTED_TIME // The earliest suppo

Android系統新增新輸入法並設為預設輸入法

由於產品需求,需將Android原生輸入法先後替換成搜狗輸入法、百度輸入法、谷歌拼音輸入法,本文以替換為谷歌輸入法為例。  packages/apps下新建資料夾,將需替換的第三方輸入法apk放入該資料夾,編寫Android.mk檔案,一谷歌輸入法為例,如下: LOCAL_

Android MTK 8.1 設定預設輸入法

以實現訊飛輸入法為預設輸入法為例: 1.\vendor\mediatek\proprietary\packages\apps\SettingsProvider\res\values\defaults.xml 中宣告FlyIME輸入法 <!-- FlyIME--> <

Android O Settings原始碼流程分析(資料載入之獲取及修改預設設定屬性值)

Android O Settings  靜態介面篇 介面渲染篇 資料載入篇之一級選單 資料載入篇之二級選單 資料載入篇之獲取及修改預設設定屬性值 搜尋欄篇 載入預設設定值及修改:(涉及SettingsProvider) 示例:(裝置自動亮

Android系統修改預設鈴聲

Andriod手機的鈴聲預設儲存在system/media/audio/下面,有四個資料夾,分別是alarms,notifications,ringtones,ui。對應鬧鐘、通知、鈴聲、UI音效。root的手機可以直接替換修改相應目錄下的檔案來修改鈴聲。那這些聲音是從哪裡來的呢。由於需要修改預設的

Android Studio修改預設Activity繼承AppCompatActivity

在Android Studio中新建Activity預設繼承AppCompatActivity,感覺這點十分不爽,找了很久,終於發現在Android Studio安裝目錄下有個模板檔案,修改其中的引數即可。 這是那個檔名: common_globals.xml.ftl

修改Android Studio預設的jdk版本

File -> other settings -> default settings   找到 Java compiler  修改 jdk 版本           &nbs

Android系統移植與除錯之-------)如何修改Android系統預設顯示

1、首先解決【設定】介面預設顯示【開發者選項】的問題 檢視原始碼:packages/apps/Settings/src/com/android/settings/SettingsActivity.java 在updateTilesList(List target)方法中,可以找到【開發

Android 7.0 刪除原生輸入法(AOSP)&更換系統預設輸入法

一、刪除原生輸入法 1 . 刪除build/target/product/core.mk 檔案下的原生輸入法: PRODUCT_PACKAGES += \ BasicDreams \ BlockedNumberProvider \

Android替換系統預設輸入法

由於產品需求,需將Android原生輸入法先後替換成搜狗輸入法、百度輸入法、谷歌拼音輸入法,本文以替換為谷歌輸入法為例。  packages/apps下新建資料夾,將需替換的第三方輸入法apk放入該資料夾,編寫Android.mk檔案,一谷歌輸入法為例,如下: LOCAL_

Android Studio 使用技巧:修改預設build.gradle

在專案中發現一些好用的外掛和庫,就想預設在每個工程裡使用,就想到了找找如何直接修改預設工程的build.gradle檔案,經過多方面查詢資料,可以使用下面的方法來改。 比如說有一個好用的butterKnife這個庫,需要新增buildscript的dependencie

Android修改圓形進度條ProgressBar的預設顏色

前言 有時候系統預設的圓形進度條不能滿足我們的需求,那麼下面我們來對預設的顏色和樣式進行一個修改。 效果圖 實現程式碼 因為是圓形進度條,我們需要設定下面這個屬性 android:indet