Intereting Posts
Renderscript через библиотеку поддержки Выполнение плагинов не распространяется на ошибку конфигурации жизненного цикла Событие для обработки фокуса EditText Hybrid vs Native Mobile app Как стилизовать текст в меню переполнения действий на устройстве с Android> 4.0 и аппаратной кнопкой? Проблема с макетом с краем кнопки Как получить идентификатор ресурса изображения, если я знаю его имя? Как выполнить SQLite-запрос в приложении Android? Преобразование числа в textview в int GlCreateShader и glCreateProgram не работают на Android Тестирование Android AsyncTask с помощью Android Test Framework Как читать местоположение только один раз с помощью locationManager (GPS и NETWORK PROVIDER) и больше не ищет обновлений местоположения? Как закодировать Bitmaps в видео с помощью MediaCodec? EditText maxLines не работает – пользователь может все еще вводить больше строк, чем установлено Обновление диалога прогресса в Activity из AsyncTask

Как отключить физическую клавиатуру в коде (используйте виртуальную клавиатуру все время)

Вы можете спросить, почему я хочу этого. Вот почему:

Я использовал сканер штрих-кодов для экрана входа в приложение. Однако подключение сканера штрих-кода заставит мой планшет использовать физическую клавиатуру (он считает, что сканер является клавиатурой), и это предотвращает появление виртуальной клавиатуры (что я хочу для некоторых других экранов). Мне нужно вручную щелкнуть по системной панели, чтобы отключить физическую клавиатуру для всплывающей виртуальной клавиатуры.

Итак, есть ли способ отключить физическую клавиатуру в коде или заставить виртуальную клавиатуру подняться, даже если подключена какая-то «клавиатура»?

Solutions Collecting From Web of "Как отключить физическую клавиатуру в коде (используйте виртуальную клавиатуру все время)"

Попробуйте следующее

Settings > Language & Input > В разделе Keyboard and input methods нажмите « Default . Можно ли отключить или отключить аппаратную / физическую клавиатуру?

Это счетчик интуитивно понятен, но после этого я могу использовать как физическую клавиатуру, так и виртуальную клавиатуру на своем устройстве (Android 4.2)

Кажется, у вас есть кое-какие неприятности в вашем случае. Из документации по классу конфигурации .

Public int hardKeyboardHidden — Добавлен в API уровня 3

Флаг, указывающий, скрыта ли жесткая клавиатура. Это будет установлено на устройстве с механизмом, чтобы скрыть клавиатуру от пользователя, когда этот механизм закрыт. Один из: HARDKEYBOARDHIDDEN_NO, HARDKEYBOARDHIDDEN_YES.

Вы можете предпринять некоторые действия для этого изменения конфигурации. Но я думаю, что нет возможности отключить физическую клавиатуру в Android.

Обновить

Там mHardKeyboardSwitch является частным членом, который содержит ссылку на SwitchView которая используется для отражения предпочтений аппаратной клавиатуры пользователя. Он не может использоваться для отключения аппаратной клавиатуры, потому что к нему нельзя получить доступ за пределами этого класса.

Я думаю, вы можете указать в вашем файле манифеста для использования на softinputmode и обрабатывать изменение конфигурации для клавиатуры | keyboard_hidden

Да, сканер штрих-кода распознается как физическая клавиатура. Когда клавиатура подключена к устройству, по умолчанию мягкая клавиатура отключена. Чтобы включить его, нам нужно отключить аппаратную клавиатуру через:

Настройки> Язык и ввод> Выбор метода ввода

Имя опции может отличаться от устройства к устройству. Мы сможем использовать сканер вместе с мягкой клавиатурой, даже если мы отключим его.

И нет, в настоящее время нет возможности программно выполнить это. Самое большее, что мы можем сделать, это обнаружить, когда сканер / клавиатура подключена и перенаправляет пользователя в окно выбора метода ввода, переопределяя метод onConfigurationChanged следующим образом:

 @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if(newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) { ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)) .showInputMethodPicker(); Toast.makeText(this, "Barcode Scanner detected. Please turn OFF Hardware/Physical keyboard to enable softkeyboard to function.", Toast.LENGTH_LONG).show(); } } 

Вы можете изменять и восстанавливать AFS. Откройте WindowManagerService.java, который находится в mydroid / frameworks / base / services / java / com / android / server / wm

Найдите строки следующим образом:

 if (hardKeyboardAvailable != mHardKeyboardAvailable) { mHardKeyboardAvailable = hardKeyboardAvailable; mHardKeyboardEnabled = hardKeyboardAvailable; mH.removeMessages(H.REPORT_HARD_KEYBOARD_STATUS_CHANGE); mH.sendEmptyMessage(H.REPORT_HARD_KEYBOARD_STATUS_CHANGE); } 

И замените 3 строки на mHardKeyboardEnabled = false;