Client-side reimplementation of IMM#setCurrentInputMethodSubtype()
This is a preparation to mark InputMethodManager#setCurrentInputMethodSubtype() deprecated. InputMethodManager#setCurrentInputMethodSubtype(), which was introduced in Android 4.0 ICS [1], was probably mistakenly exposed as a public API, because it has required WRITE_SECURE_SETTINGS that typical applications cannot have. Keeping maintaining InputMethodManager#setCurrentInputMethodSubtype() is not that simple because now we are about to enable per-profile IME mode, where this method needs to have a more clear spec about what "Current" means. An ideal solution is just removing this method, because if the caller already has WRITE_SECURE_SETTINGS permission, they can just directly update Settings.Secure.SELECTED_INPUT_METHOD_SUBTYPE to achieve the same goal. However, given that this has been a public API, it would probably make sense to provide a fallback implementation like I did for null IME token in InputMethodManager#setInputMethod() [2]. Either way, InputMethodManager#setCurrentInputMethodSubtype() will be marked as deprecated in a subsequent CL. [1]: I55daa19ba924999def544bf841f00bf54852f3e1 b66d287e [2]: I42dd0325b01c527009bf85566ca8ba0766b2294e 0c1ebffd Bug: 123249820 Test: manually done with a test app that has WRITE_SECURE_SETTINGS Change-Id: I76da83c57cffc6b73defccfd4a1b5734c958a97e
Loading
Please register or sign in to comment