原生設置里,系統-語言和輸入法-實體鍵盤-使用屏幕鍵盤 選項,
關閉時,外接物理鍵盤,如USB鍵盤,輸入時不會彈出軟鍵盤。
打開時,外接物理鍵盤,如USB鍵盤,輸入時會彈出軟鍵盤。
這個選項默認是關閉的。
改為打開,如有需要,可通過 overlay
的方法修改。
--- a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
+++ b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
@@ -38,4 +38,7 @@<!-- Decrease animation duration. --><fraction name="def_window_animation_scale">50%</fraction><fraction name="def_window_transition_scale">50%</fraction>
+
+ <!-- Default for Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD -->
+ <bool name="def_show_ime_with_hard_keyboard">true</bool></resources>
Settings 源碼在 ./packages/apps/Settings/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
,
@Overridepublic void onResume() {super.onResume();mLastHardKeyboards.clear();scheduleUpdateHardKeyboards();mIm.registerInputDeviceListener(this, null);mShowVirtualKeyboardSwitch.setOnPreferenceChangeListener(mShowVirtualKeyboardSwitchPreferenceChangeListener);registerShowVirtualKeyboardSettingsObserver();}private void registerShowVirtualKeyboardSettingsObserver() {unregisterShowVirtualKeyboardSettingsObserver();getActivity().getContentResolver().registerContentObserver(Secure.getUriFor(Secure.SHOW_IME_WITH_HARD_KEYBOARD),false,mContentObserver,UserHandle.myUserId());updateShowVirtualKeyboardSwitch();}private void updateShowVirtualKeyboardSwitch() {mShowVirtualKeyboardSwitch.setChecked(Secure.getInt(getContentResolver(), Secure.SHOW_IME_WITH_HARD_KEYBOARD, 0) != 0);}private final OnPreferenceChangeListener mShowVirtualKeyboardSwitchPreferenceChangeListener =(preference, newValue) -> {Secure.putInt(getContentResolver(), Secure.SHOW_IME_WITH_HARD_KEYBOARD,((Boolean) newValue) ? 1 : 0);return true;};