1. 程式人生 > >Android替換/修改系統預設輸入法

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

各大輸入法的服務

ro.mtk_default_ime=com.tencent.qqpinyin.QQPYInputMethodService//預設qq輸入法
ro.mtk_default_ime=com.sohu.inputmethod.sogou.SogouIME//預設搜狗輸入法
ro.mtk_default_ime=com.baidu.input.ImeService//預設百度輸入法
ro.mtk_default_ime=com.iflytek.inputmethod.oem.FlyIME//預設訊飛輸入法
ro.mtk_default_ime=com.baidu.input_huawei.ImeService//華為輸入法

一、適用於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、KK的 版本:

1. 需要提前將用到的預設輸入法(.apk)內建到系統中( 請參考如何將APK預置進系統)
2. 修改檔案 mediatek/config/${Project}/ProjectConfig.mk
將巨集 DEFAULT_INPUT_METHOD 的值設定為所需的輸入法;
比如 PinyinIME, 則設為: DEFAULT_INPUT_METHOD=
com.android.inputmethod.pinyin.PinyinIME這個值是輸入法原始碼中,包含InputMethodService子類的那個包名.實現
InputMethodService的子類的類名。這裡比log中列印的完整類名少一個"/",請注意
補充說明:
KK的版本不需要一下修改:
上面的修改方法只適用於預設輸入法為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");//這裡修改
預設選中的輸入法

相關推薦

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

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

Android 原始碼 修改系統預設橫屏

1:WindowManagerService: platform\frameworks\base\services\core\java\com\android\server\wm\WindowManagerService.class  具體改動的地方看程式碼吧,

Android替換系統預設輸入法

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

Android系統預設輸入法修改

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

[sg] Android 6.0 修改系統預設時區和修改12小時製為24小時制

修改預設時區 在最終編譯出的配置檔案build.prop增加屬性 persist.sys.timezone=Asia/Shanghai (我這裡預設選擇東八區上海,其他對應的時區在frameworks\base\core\res\res\xml\time_z

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

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

Android 5.1 修改系統預設語言

折騰了下下這個很2的問題。網上放的方法比較舊, Android5.1的話, 設定後當時生效, 重啟後就失效了。 private void updateLanguage(Locale locale) { try {

Android 修改系統預設碟符名稱

1、修改路徑:frameworks/av/media/mtp/MtpServer.cpp 2、修改方法:MtpResponseCode MtpServer::doGetDeviceInfo() { mData.putString(string); // Man

Android菜鳥之學習android原始碼之三(修改系統預設橫屏)

好多小夥伴在開發平板產品的時候都會接到把系統預設豎屏改成預設橫屏的任務,網上查了許多的文章,有說改底層的c++檔案的,有說改系統編譯出來的一些配置檔案的,眾說紛紜,我當初也踩過了不少的坑,最終發現一種比較靠譜的方式,那就是修改WindowManagerServi

Android 修改系統預設時間格式

android系統第一次開機決定系統的時間格式的程式碼在frameworks層的SettingsProvider應用中。  1.新增xml配置 在frameworks\base\packages\SettingsProvider\res\values\defaults

Android之呼叫系統預設聲音

//宣告許可權 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> //呼叫方法 //開啟音樂的方法 public void openMusic(){

Python筆記——win7系統修改系統預設python版本

相信很多朋友在自己的電腦裡都不止安裝了一個版本的python,如筆者在自己的Windows系統中就安裝了python2.7,3.5,3.6三個版本,在cmd命令列視窗中輸入python會顯示當前系統預設的python版本。想要在Windows系統下修改預設python版本,需

android studio 修改jdk預設編譯版本

File -- Other Settings -- Default Settings... Compiler -- Java Compiler --Project bytecode version(leave blank for jdk default):

fedora15修改系統預設執行級別

   今天檢視/etc/inittab檔案,發現檔案的內容如下:    大概的意思是systemd啟用後,inittab檔案就不再使用了,通過man命令檢視,感覺和init作用差不多。     按照提示,檢視/lib/systemd/system/*.target檔

win7系統修改系統預設python版本

相信很多朋友在自己的電腦裡都不止安裝了一個版本的python,如筆者在自己的Windows系統中就安裝了python2.7,3.5,3.6三個版本,在cmd命令列視窗中輸入python會顯示當前系統預設的python版本。想要在Windows系統下修改預設python版本,需

Android學習之系統預設路徑

Environment.getDataDirectory().getPath()=/data Environment.getDownloadCacheDirectory().getPath()=/cache Environment.getExternalStorageDirectory()=/storage/

android修改系統自帶ProgressDialog樣式

1.ProgressDialog預設樣式是當前Activity的theme所定義的ProgressDialog樣式。   繼承自父類AlertDialog的style. AlertDialog的原始碼 static int resolveDialogTheme(

C#修改系統預設印表機

using System; using System.Management;             //需要引用System.Management public class Sample {      public static void Main(string[] args)      {       

Centos 7修改系統預設編碼

centos 6修改 /etc/sysconfig/i18n 立即生效 source /etc/sysconfig/i18n由於centos 7 沒有這個檔案:修改 /etc/locale.conf 立

修改系統預設的TTL值-預防被探測作業系統

在網路攻防課程中,學習到如何探測作業系統,那麼我們如何預防探測作業系統呢?其中比較簡單實現的方法是修改作業系統的預設TTL值: 黑客如果用ping命令去探測目標主機,根據TTL基數可以推測作業系統的型別。對於一個沒有經過任何閘道器和路由的網路, 直接ping對方系統得到的T