Как использовать android: inputType в EditText, чтобы указать мой собственный IME?

Мое приложение включает пользовательский IME (который расширяет InputMethodService), и теперь я хотел бы указать его как IME для всех EditTexts в моем приложении.

Указание android:inputMethod для каждого EditText кажется одним из старых способов сделать это, но android:inputMethod теперь устарело. Во всплывающей подсказке говорится, что вместо этого следует использовать android:inputType.

Мой существующий код для одного EditText - android:inputType="numberPassword", но когда я меняю его на android:inputType=".MyCustomIME" (или android:inputType="com.example.MyCustomIME"), я получаю эту ошибку в Android Studio:

Не удается разрешить флаг.

Итак, как правильно указать мой IME (либо для одного EditText, либо для всего приложения) — и без потери моего существующего значения numberPassword (поскольку это определяет мой подтип IME, который будет использоваться)?

Мой IME определен в моем манифесте как:

<service
    android:name=".MyCustomIME"
    android:label="@string/my_keyboard"
    android:permission="android.permission.BIND_INPUT_METHOD">
    <intent-filter>
        <action
            android:name="android.view.InputMethod" />
    </intent-filter>

    <meta-data
        android:name="android.view.im"
        android:resource="@xml/keyboard_method" />
</service>

(Примечание: использование android:name="com.example.MyCustomIME" в приведенном выше теге <service /> не имеет никакого значения.)


person ban-geoengineering    schedule 18.12.2019    source источник
comment
Ты уверен? Вы сделали аналогичный комментарий по другому вопросу/ответу, но потом исправились. Я не могу найти его сейчас, но я проголосовал за ваш исправляющий комментарий (несколько минут назад), так что, может быть, вы сможете его найти?   -  person ban-geoengineering    schedule 19.12.2019
comment
Я проголосовал за ваш комментарий об исправлении (несколько минут назад) - сегодня кто-то проголосовал против ответа, поэтому я его уничтожил. Я согласен с г-ном Сечаном в том, что android:inputMethod не считается устаревшим. Лично я не ожидал бы, что он будет надежно работать у разных производителей устройств. И, если ваш IME не обрабатывает все возможные сценарии доступности, у вас могут быть недовольные пользователи. Но я удалил свой предыдущий комментарий здесь — я должен был сделать это после просмотра отрицательного голоса, но я забыл, и я приношу извинения за это.   -  person CommonsWare    schedule 19.12.2019
comment
Хорошо, спасибо - не беспокойтесь. Похоже, Android Studio по какой-то причине устарела: developer.android .com/reference/android/R.attr.html#inputMethod . Я буду пытаться заставить inputMethod работать - как обсуждается здесь - stackoverflow.com/a/24791067/1617737 - если есть идеи?   -  person ban-geoengineering    schedule 19.12.2019
comment
Кстати, это приложение предназначено для одного клиента, которого не устраивает стандартная клавиатура его устройства — отсюда и моя пользовательская клавиатура.   -  person ban-geoengineering    schedule 19.12.2019
comment
Похоже, что Android Studio по какой-то причине устарела — это очень странно. TextView не показывает его как устаревшее, а android:inputType на самом деле не является заменой. FWIW, я подал проблему с документацией по поводу несоответствия, хотя у меня плохой опыт в привлечении кого-либо смотреть на такие вещи.   -  person CommonsWare    schedule 19.12.2019