Я загрузил и импортировал пример Softkeyboard из Android SDK (приложение) в студию Android и установил его на свой Sony xPeria Z3 под управлением Android 5.1.1. Тем не менее, я не вижу имя приложения на странице настроек языка и ввода .
Я проверил список установленных приложений на своем телефоне и вижу, что SoftKeyboard установлена, а в Android Studio ошибки нет.
Можете ли вы показать мне способ решить эту проблему?
Примечание . Команды в этом решении требуют настройки adb на ПК, и решение протестировано на Android 4.2.1, 5.0.2 и 5.1.1.
Всякий раз, когда в системе установлено приложение со службой IME, чтобы подключить его IME к системе , владелец устройства должен явным образом разрешить приложению стать частью включенных методов ввода.
Так как же это происходит? Мы знаем, что можем использовать командную строку, но это не то, что делают обычные пользователи.
Это происходит так. Когда вы запускаете это приложение, вас попросят включить его клавиатуру. Затем вы будете перенаправлены в подвид деятельности приложения «Настройки». В прошивках, близких к стандартному Android, пользователь может получить доступ к этому дополнительному действию, выбрав «Настройки» → «Язык и ввод» → «Текущая клавиатура» → «Выбрать клавиатуру» . Вот как это выглядит на некоторых устройствах:
(Нажмите на изображение, чтобы увеличить; изображение предоставлено OP)
Вы можете использовать командную строку в качестве альтернативы, чтобы показать, что вспомогательное действие
adb shell am start -a android.settings.INPUT_METHOD_SETTINGS
adb shell "am start 'intent:#Intent;action=android.settings.INPUT_METHOD_SETTINGS;end'" # alternative to above command
Для приложения, когда вы поворачиваете ползунок вправо в этом поддействии, его идентификатор IME добавляется к значению enabled_input_methods — безопасной настройке. Затем приложение отображается в разделе «Настройки» → «Язык и ввод » среди тех, которые уже включены в качестве методов ввода.
Поскольку только один IME может оставаться в качестве IME по умолчанию в системе, приложение затем отображает диалоговое окно для выбора приложения клавиатуры по умолчанию. Доступ к этому диалоговому окну можно получить из «Настройки» → «Язык и ввод» → «Текущая клавиатура» . Любая запись, которую вы выберете, станет клавиатурой по умолчанию в устройстве.
Теперь, когда вы знаете подробности, теперь вы можете легко добавить клавиатуру к включенным методам ввода, включая ваше примерное приложение клавиатуры.
Есть и другой способ. Все включенные методы ввода могут быть перечислены этой командой:
adb shell ime list -s
Пример вывода
com.android.inputmethod.latin/.LatinIME
net.zhdev.ctrlvkeyboard/.CtrlVKeyboard
Все доступные (включенные или нет) службы IME могут быть перечислены через
adb shell ime list -a
Пример вывода
com.android.inputmethod.latin/.LatinIME: mId= com.android.inputmethod.latin/.LatinIME mSettingsActivityName=com.android.inputmethod.latin.settings.SettingsActivity mIsDefaultResId = 0x7f070000 Услуга: приоритет = 0, предпочтительный порядок = 0, совпадение = 0x108000, специфический индекс = -1, isDefault = false Информация о сервисе: имя = com.android.inputmethod.latin.LatinIME packageName=com.android.inputmethod.latin labelRes=0x7f08003a nonLocalizedLabel=нулевой значок=0x0 баннер=0x0 enabled=true exported=true имя_процесса=com.android.inputmethod.latin разрешение = android.permission.BIND_INPUT_METHOD флаги = 0x0 net.zhdev.ctrlvkeyboard/.CtrlVKeyboard: mId= net.zhdev.ctrlvkeyboard/.CtrlVKeyboard mSettingsActivityName=null mIsDefaultResId = 0x0 Услуга: приоритет = 0, предпочтительный порядок = 0, совпадение = 0x108000, специфический индекс = -1, isDefault = false Информация о сервисе: имя=net.zhdev.ctrlvkeyboard.CtrlVKeyboard packageName=net.zhdev.ctrlvkeyboard labelRes=0x7f0b0015 nonLocalizedLabel=нулевой значок=0x0 баннер=0x0 enabled=true exported=true имя_процесса=net.zhdev.ctrlvkeyboard разрешение = android.permission.BIND_INPUT_METHOD флаги = 0x0 com.touchtype.swiftkey/com.touchtype.KeyboardService: mId= com.touchtype.swiftkey/com.touchtype.KeyboardService mSettingsActivityName=com.touchtype.settings.TouchTypeKeyboardSettings mIsDefaultResId = 0x0 Услуга: приоритет = 0, предпочтительный порядок = 0, совпадение = 0x108000, специфический индекс = -1, isDefault = false Информация о сервисе: имя = com.touchtype.KeyboardService packageName=com.touchtype.swiftkey enabled=true exported=true имя_процесса=com.touchtype.swiftkey разрешение = android.permission.BIND_INPUT_METHOD флаги = 0x0
Выделенные рядом строки mId=
— это идентификаторы клавиатурных приложений, доступных в моей системе.
В любом идентификаторе строка перед /
является именем пакета приложения клавиатуры. Пример: для клавиатуры Swiftkey mId:
com.touchtype.swiftkey/com.touchtype.KeyboardService
Строка com.touchtype.swiftkey
представляет собой имя пакета приложения Swiftkey. Имя пакета — это то, что поможет вам найти соответствующий mID, который вы должны использовать для включения определенного приложения клавиатуры.
Чтобы узнать имя пакета приложения, выполните команду Просмотр полного имени пакета приложения?
Чтобы добавить или удалить IME в включенных методах ввода, выполните
# replace ID with mId of the keyboard app which you want to add or remove
adb shell ime enable ID
adb shell ime disable ID
Чтобы сделать IME IME по умолчанию для системы, выполните
# Note that it doesn't matter whether the IME is added into enabled input methods or not. Consider this a direct override.
adb shell settings put secure default_input_method "ID"
adb shell content update --uri content://settings/secure --bind value:s:"ID" --where "name='default_input_method'" # alternative to above command
Повелитель огня
adb shell am start -a android.settings.INPUT_METHOD_SETTINGS
илиadb shell "am start 'intent:#Intent;action=android.settings.INPUT_METHOD_SETTINGS;end'"
. Я считаю, что это может быть несложно преобразовать эту команду в код.