showInputMethodPicker из уведомления не работает в Android 9

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

((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE)).showInputMethodPicker();

когда пользователь нажимает на уведомление.

До сих пор это работало, но не всегда работает на Android 9: когда мое приложение находится на переднем плане, оно работает. Когда это не так, ничего не происходит. На logcat я вижу предупреждение

«Предупреждение 889 InputMethodManagerService игнорирует showInputMethodPickerFromClient uid 10210: com.android.internal.view.IInputMethodClient$Stub$Proxy@edf46f0».

Есть ли способ сделать эту работу снова?

Обновление: я попытался создать действие, вызвав showInputMethodPicker(); в onResume(). Это работает (если я использую postDelayed() с относительно большой задержкой, к сожалению), но я не могу заставить активность автоматически закрываться. Так что это не кажется хорошим способом.


person Philipp    schedule 27.08.2018    source источник
comment
Есть ли способ сделать эту работу снова? - скорее всего нет, ужесточили ограничения на показ IME для исправления ошибки - android.googlesource .com/платформа/фреймворки/база/+/   -  person Константин Осипов    schedule 16.09.2018


Ответы (1)


Проблему можно решить, установив разрешение WRITE_SECURE_SETTINGS для вашего приложения.

К сожалению, для этого требуется выполнить одну команду adb:

adb shell pm grant com.name.app android.permission.WRITE_SECURE_SETTINGS

где com.name.app — это имя пакета вашего приложения.

person Flnch    schedule 10.05.2019