第一步:先预装搜狗输入法app
第二步: 上代码
frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -253,6 +253,7 @@ import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
+import java.util.Locale;
/**
* WindowManagerPolicy implementation for the Android phone UI. This
@@ -2107,6 +2108,11 @@ public class PhoneWindowManager implements WindowManagerPolicy {
filter.addAction(Intent.ACTION_SHUTDOWN);
context.registerReceiver(mShutdownanimationReceiver, filter);
+ filter = new IntentFilter();
+ filter.addAction(Intent.ACTION_BOOT_COMPLETED);
+ filter.addAction(Intent.ACTION_LOCALE_CHANGED);
+ context.registerReceiver(mChangeInputMethodReceiver, filter);
+
// monitor for system gestures
mSystemGestures = new SystemGesturesPointerEventListener(context,
new SystemGesturesPointerEventListener.Callbacks() {
@@ -6752,7 +6758,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
};
BroadcastReceiver mShutdownanimationReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
@@ -6764,6 +6769,29 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
};
+ // 配置默认输入法
+ BroadcastReceiver mChangeInputMethodReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (Intent.ACTION_LOCALE_CHANGED.equals(intent.getAction())
+ || Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
+
+ Locale locale = context.getResources().getConfiguration().locale;
+ String language = locale.getLanguage();
+ if (language.endsWith("zh")) {
+ Settings.Secure.putString(context.getContentResolver(),
+ Settings.Secure.DEFAULT_INPUT_METHOD,
+ "com.sohu.inputmethod.sogou/.SogouIME");
+ }
+ else {
+ Settings.Secure.putString(context.getContentResolver(),
+ Settings.Secure.DEFAULT_INPUT_METHOD,
+ "com.android.inputmethod.latin/.LatinIME");
+ }
+ }
+ }
+ };
+
注:Android常见输入法及包名
百度: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
Android: com.android.inputmethod.latin/.LatinIME
技术交流群