Настройки клавиатуры в эмуляторе возвращаются при перезапуске

Мой эмулятор Android 2.3.3 имеет четыре разных клавиатуры:

  1. Японская клавиатура
  2. Китайская клавиатура
  3. Android-клавиатура
  4. Образец программной клавиатуры

Я снимаю все флажки, чтобы использовать аппаратную клавиатуру. Через несколько секунд выдает сообщение об ошибке о том, что процесс com.android.inputmethod.latinне отвечает, с Force Closeкнопкой. Более того, я закрываю и перезапускаю свой эмулятор, чтобы найти все проверенные клавиатуры!

Причина, по которой я хочу, чтобы все не было проверено, заключается в следующем:

Когда я нажимаю курсором на место, куда я хочу вставить текст (по крайней мере, в WhatsApp, я сталкиваюсь с этой проблемой), курсор остается там от 3 до 10 секунд (!!), а затем на экране появляется клавиатура и курсор возвращается туда, где был! Это не тот случай, когда все экранные клавиатуры отключены.

Как сделать параметр отключения клавиатуры постоянным?

ОБНОВЛЕНИЕ: Это было за гранью моего воображения и очень раздражало. Методы ввода, отличные от программной клавиатуры, вернулись и даже стали доступны после перезагрузки эмулятора! Почему sdk просто отказывается сохранять настройки??

Ответы (1)

ВЫПОЛНЕНО: я сделал резервную копию всего содержимого моего старого эмулятора, создал новый эмулятор, используя

android create avd -t <TargetID> -n <EmulatorName> -a --abi <CPU/ABI-Used>

Чтобы помочь узнать правильное значение <TargetID>и допустимые значения, <CPU/ABI-Used>соответствующие тому же, что и в соответствии с вашим выбором уровня API, я использовал

android list targets

Затем вы обнаружите, что доступна опция Snapshot, когда вы редактируете тот же AVD из диспетчера виртуальных устройств Android. Так что проверяйте снимок. И когда вы запускаете, убедитесь, что вы отметили параметры «Запустить из снимка» и «Сохранить в снимок». Теперь используйте rmкоманды adb shellдля удаления IME. (Я скоро объясню, как это делается) Вы закрываете и в следующий раз открываете его с помощью emulatorкоманды, он загружается из моментального снимка, и достигается постоянство настроек IME (или, если уж на то пошло, любых системных настроек)!

(PS: Только когда вы измените конфигурацию оборудования, вам нужно будет перезагрузиться, и в этом случае вы не сможете запустить из моментального снимка, поскольку он был сохранен для другой конфигурации оборудования!)

Как видно из вопроса, все, что я хочу, это чтобы моя аппаратная клавиатура была активной, и меня действительно не волнуют 4 метода ввода. Мне никогда не приходило в голову, что я могу просто удалить все IME: Вот как:

Смонтируйте /systemпапку. Получите имена apk IME, зайдя /system/appи отобразив его содержимое:

aneesh@nb-14:~$ adb shell mount -rw -o remount /dev/block/mtdblock0 /system
aneesh@nb-14:~$ adb shell
# cd /system/app
# ls
Phone.apk
Development.apk
Email.apk
Calculator.apk
...
..
etc.

Дальше просто делай

rm <IMEapkname>.apk

Например, в случае японского IME выполняется

rm /system/app/PinyinIME.apk

Поскольку этот трюк для меня пока не сработал для образца мягкой клавиатуры:

Я вышел из оболочки adb и сделал:

adb uninstall com.example.android.softkeyboard

ОБНОВЛЕНИЕ: Как только вы убедитесь, что снимок сохранен правильно (попробуйте запустить из снимка через терминал/диспетчер AVD, это не должно вызывать ошибок) и не хотите вносить дальнейшие изменения в системные приложения или конфигурации оборудования, запустите эмулятор с помощью вариант -no-snapshot-save:

emulator -no-snapshot-save -avd Andreud

чтобы вы могли запускаться из моментального снимка, как и раньше, и избегать аберраций, возникающих при сохранении в моментальный снимок (чтобы не возникла ошибка, говорящая, что он был сохранен для другой аппаратной конфигурации). Кроме того, вы можете сэкономить несколько драгоценных секунд, необходимых для сохранения моментального снимка. Таким образом, ваш общий опыт работы с эмулятором Android улучшится!