RK3326 Android 8.1 修改默认输入法为讯飞输入法——两种方法,推荐第二种(纯代码)

方法一

1:预装对应的输入法,我使用的瑞芯微方案,已经提供了方法,把APK放在对应的目录里就会预装,不具备参考性

可以参考下面的博客:

是在Android7.0上操作的

https://blog.csdn.net/kris_fei/article/details/69374863?utm_source=itdadao&utm_medium=referral

https://blog.csdn.net/kris_fei/article/details/81099629

2:frameworks/base/packages/SettingsProvider/res/values/defaults.xml

diff --git a/packages/SettingsProvider/res/values/defaults.xml b/packages/SettingsProvider/res/values/defaults.xml
old mode 100644
new mode 100755
index 1b7e3ac..fd5f630
--- a/packages/SettingsProvider/res/values/defaults.xml
+++ b/packages/SettingsProvider/res/values/defaults.xml
@@ -188,6 +188,9 @@
     <!--  default setting for Settings.System.END_BUTTON_BEHAVIOR : END_BUTTON_BEHAVIOR_SLEEP -->
     <integer name="def_end_button_behavior">0x2</integer>
 
+	<string name="def_input_method" translatable="false">com.iflytek.inputmethod/.FlyIME</string>
+	<string name="def_enabled_input_methods" translatable="false">com.iflytek.inputmethod/.FlyIME</string>
+
     <!-- should show the screenshot button default -->
     <integer name="def_screenshot_button_show">0</integer>
     <!-- the store location of screen capture by default-->

3:frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java

diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
old mode 100644
new mode 100755
index d8f3daf..e616be2
--- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -2460,6 +2460,11 @@ class DatabaseHelper extends SQLiteOpenHelper {
             loadIntegerSetting(stmt, Settings.Secure.SLEEP_TIMEOUT,
                     R.integer.def_sleep_timeout);
 
+			loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,
+					R.string.def_input_method );
+
+			loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS,
+					R.string.def_enabled_input_methods);
             /*
              * IMPORTANT: Do not add any more upgrade steps here as the global,
              * secure, and system settings are no longer stored in a database

4:frameworks/base/services/core/java/com/android/server/InputMethodManagerService.java

diff --git a/services/core/java/com/android/server/InputMethodManagerService.java b/services/core/java/com/android/server/InputMethodManagerService.java
old mode 100644
new mode 100755
index c23757f..38c4c54
--- a/services/core/java/com/android/server/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/InputMethodManagerService.java
@@ -3522,7 +3522,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
         }
 
         // TODO: The following code should find better place to live.
-        if (!resetDefaultEnabledIme) {
+/*        if (!resetDefaultEnabledIme) {
             boolean enabledImeFound = false;
             final List<InputMethodInfo> enabledImes = mSettings.getEnabledInputMethodListLocked();
             final int N = enabledImes.size();
@@ -3541,7 +3541,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
                 resetSelectedInputMethodAndSubtypeLocked("");
             }
         }
-
+*/
         if (resetDefaultEnabledIme) {
             final ArrayList<InputMethodInfo> defaultEnabledIme =
                     InputMethodUtils.getDefaultEnabledImes(mContext, mMethodList);

注意

刚开始按照上面几步是弹不出来输入法的,最后是删除了自带的输入法,才能够正常的弹出输入法。

参考

https://blog.csdn.net/dpppppp/article/details/86539223

https://blog.csdn.net/kris_fei/article/details/69374863?utm_source=itdadao&utm_medium=referral

https://blog.csdn.net/kris_fei/article/details/81099629

方法二

1:同方法一要先安装了对应的输入法

2:frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java

diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index cebf0a7..015cc10 100755
--- 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.iflytek.inputmethod/.FlyIME");
+				 }
+				 else {
+					Settings.Secure.putString(context.getContentResolver(), 
+											Settings.Secure.DEFAULT_INPUT_METHOD,
+											"com.android.inputmethod.latin/.LatinIME");
+				}
+			}
+        }
+    };
+
     private final Runnable mHiddenNavPanic = new Runnable() {
         @Override
         public void run() {

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值