OSDN Git Service

Fix a behavior change in "Show software keyboard".
authorYohei Yukawa <yukawa@google.com>
Wed, 4 May 2016 18:56:35 +0000 (11:56 -0700)
committerYohei Yukawa <yukawa@google.com>
Wed, 4 May 2016 18:56:35 +0000 (11:56 -0700)
This bug was a corner case of stopping lying about
Configuration#keyboard when "Show software keyboard" is turned on, which
was done by my CL [1] in Android N development cycle.

Previous implementation

  if (config.keyboard != Configuration.KEYBOARD_NOKEYS) {

had relied on the fact that the system was lying about config.keyboard,
which is no longer valid.  We need to change the behavior of
InputMethodService#onShowInputRequested() depending on
Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD like we did for
InputMethodService#onEvaluateInputViewShown() in [1] to minimize the
impact on stopping lying about Configuration#keyboard.

 [1]: Id4d332e3909590c68345e10e1f2e18650efb2eb7
      7b739a802cb7d97460a0bf8a1e9774efe96fa552

Bug: 28423439
Change-Id: I8a774cbf61ac706d8446be91b17bceee57a13656

core/java/android/inputmethodservice/InputMethodService.java

index 085b97c..923be5e 100644 (file)
@@ -1536,8 +1536,8 @@ public class InputMethodService extends AbstractInputMethodService {
                 // mode at this point.
                 return false;
             }
-            Configuration config = getResources().getConfiguration();
-            if (config.keyboard != Configuration.KEYBOARD_NOKEYS) {
+            if (!mSettingsObserver.shouldShowImeWithHardKeyboard() &&
+                    getResources().getConfiguration().keyboard != Configuration.KEYBOARD_NOKEYS) {
                 // And if the device has a hard keyboard, even if it is
                 // currently hidden, don't show the input method implicitly.
                 // These kinds of devices don't need it that much.