From 632fd43924856f097d702c8fc6098f53e1688518 Mon Sep 17 00:00:00 2001 From: Wilson Wu Date: Thu, 10 Nov 2022 15:16:33 +0800 Subject: [PATCH] Fix show/hide virtual keyboard delay The default observer delay is 10s for background service. When a device connected to a hardware keyboard, the delay makes soft keyboard visibility is unsync after user switch the configuration. Notify the SHOW_IME_WITH_HARD_KEYBOARD change without delay. Bug: 240210005 Test: Manual with bug steps Change-Id: I7f8cb0df514fdea4ed0e092cd4466931ec200969 --- .../settings/inputmethod/PhysicalKeyboardFragment.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java index 808129fb690..d7a208c17f9 100644 --- a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java +++ b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java @@ -20,6 +20,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.app.Activity; import android.app.settings.SettingsEnums; +import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.database.ContentObserver; @@ -211,8 +212,10 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment private final OnPreferenceChangeListener mShowVirtualKeyboardSwitchPreferenceChangeListener = (preference, newValue) -> { - Secure.putInt(getContentResolver(), Secure.SHOW_IME_WITH_HARD_KEYBOARD, - ((Boolean) newValue) ? 1 : 0); + final ContentResolver cr = getContentResolver(); + Secure.putInt(cr, Secure.SHOW_IME_WITH_HARD_KEYBOARD, ((Boolean) newValue) ? 1 : 0); + cr.notifyChange(Secure.getUriFor(Secure.SHOW_IME_WITH_HARD_KEYBOARD), + null /* observer */, ContentResolver.NOTIFY_NO_DELAY); return true; };