diff options
| -rw-r--r-- | core/res/res/values/config.xml | 4 | ||||
| -rw-r--r-- | core/res/res/values/symbols.xml | 1 | ||||
| -rw-r--r-- | services/java/com/android/server/SystemServer.java | 13 |
3 files changed, 17 insertions, 1 deletions
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 4a60fb7e8292..12c55f873373 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -4410,6 +4410,10 @@ or empty if the default should be used. --> <string translatable="false" name="config_deviceSpecificDeviceStatePolicyProvider"></string> + <!-- Class name of the device specific implementation of InputMethodManagerService + or empty if the default should be used. --> + <string translatable="false" name="config_deviceSpecificInputMethodManagerService"></string> + <!-- Component name of media projection permission dialog --> <string name="config_mediaProjectionPermissionDialogComponent" translatable="false">com.android.systemui/com.android.systemui.media.MediaProjectionPermissionActivity</string> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index e9f80235d746..daed3bb6dc42 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -483,6 +483,7 @@ <java-symbol type="array" name="config_deviceSpecificSystemServices" /> <java-symbol type="string" name="config_deviceSpecificDevicePolicyManagerService" /> <java-symbol type="string" name="config_deviceSpecificAudioService" /> + <java-symbol type="string" name="config_deviceSpecificInputMethodManagerService" /> <java-symbol type="integer" name="config_num_physical_slots" /> <java-symbol type="integer" name="config_default_cellular_usage_setting" /> <java-symbol type="array" name="config_supported_cellular_usage_settings" /> diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index 88c0ec6d9c95..fe2d0be0fe36 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -1665,7 +1665,18 @@ public final class SystemServer implements Dumpable { // Bring up services needed for UI. if (mFactoryTestMode != FactoryTest.FACTORY_TEST_LOW_LEVEL) { t.traceBegin("StartInputMethodManagerLifecycle"); - mSystemServiceManager.startService(InputMethodManagerService.Lifecycle.class); + String immsClassName = context.getResources().getString( + R.string.config_deviceSpecificInputMethodManagerService); + if (immsClassName.isEmpty()) { + mSystemServiceManager.startService(InputMethodManagerService.Lifecycle.class); + } else { + try { + Slog.i(TAG, "Starting custom IMMS: " + immsClassName); + mSystemServiceManager.startService(immsClassName); + } catch (Throwable e) { + reportWtf("starting " + immsClassName, e); + } + } t.traceEnd(); t.traceBegin("StartAccessibilityManagerService"); |