InputConnection.commitText (текст CharSequence, int newCursorPosition) может передавать только английские символы и цифры?

Я реализую метод ввода, называемый RemoteInput, просто расширяет InputMethodService, без InputViews и без клавиатуры. Когда пользователь выбирает RemoteInput как IME по умолчанию, RemoteInput отправляет текущий статус входа на другое устройство, и пользователь может удаленно выполнять входные действия (используя наш клиентский протокол). Когда ввод будет выполнен, текст, введенный на другом устройстве, будет отправлен обратно на текущее устройство, а затем RemoteInput передаст текст на текущий компонент пользовательского интерфейса (например, EditText) с помощью InputConnection.commitText (CharSequence text, int newCursorPosition) .

Он отлично работает, когда текст с дистанционным вводом – это английские символы и цифры, но когда дело доходит до других персонажей, все идет не так. Я обнаружил, что InputConnection.commitText фильтрует другие символы. Например, я приветствую hello你好 , только hello успешно. И более:

  • hello world ==> helloworld
  • hello,world!! helloworld > helloworld

Все, что вы расскажете об этом, будет полезно, спасибо заранее.

Вот мой код:

 public class RemoteInput extends InputMethodService { protected static String TAG = "RemoteInput"; public static final String ACTION_INPUT_REQUEST = "com.aidufei.remoteInput.inputRequest"; public static final String ACTION_INPUT_DONE = "com.aidufei.remoteInput.inputDone"; private BroadcastReceiver mInputReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (ACTION_INPUT_DONE.equals(intent.getAction())) { String text = intent.getStringExtra("text"); Log.d(TAG, "broadcast ACTION_INPUT_DONE, input text: " + text); input(text); } } }; @Override public void onCreate() { super.onCreate(); registerReceiver(mInputReceiver, new IntentFilter(ACTION_INPUT_DONE)); } @Override public View onCreateInputView() { //return getLayoutInflater().inflate(R.layout.input, null); return null; } @Override public boolean onShowInputRequested(int flags, boolean configChange) { if (InputMethod.SHOW_EXPLICIT == flags) { Intent intent = new Intent(ACTION_INPUT_REQUEST); getCurrentInputConnection().performContextMenuAction(android.R.id.selectAll); CharSequence text = getCurrentInputConnection().getSelectedText(0); intent.putExtra("text", text==null ? "" : text.toString()); sendBroadcast(intent); } return false; } public void input(String text) { InputConnection inputConn = getCurrentInputConnection(); if (text != null) { inputConn.deleteSurroundingText(100, 100); inputConn.commitText(text, text.length()); } //inputConn.performEditorAction(EditorInfo.IME_ACTION_DONE); } @Override public void onDestroy() { unregisterReceiver(mInputReceiver); super.onDestroy(); } } 

Если вы используете другой язык, кроме английского, вы должны использовать Unicode. Вам нужно прикрепить свой юникодный шрифт к вашему проекту и установить шрифт элемента (например, EditText) на прикрепленный вами шрифт. Чтобы узнать, как добавить пользовательские шрифты в приложение, выполните следующие действия.

http://tharindudassanayake.wordpress.com/2012/02/25/use-sinhala-fonts-for-your-android-app/

Второй вариант – укоротить ваше устройство и установить необходимый шрифт.

Intereting Posts
Phonegap Media API (Android) – носители не определены Приложение в режиме киоска на андроиде Как я могу запустить мероприятие из местоположения на экране, например, на главном экране или в последних приложениях? Как передать параметр байта типа функции AsyncTask? Не удается создать каталог во внешнем хранилище, хотя разрешения, видимо, установлены правильно Рисование пунктирной (…) дорожки пути вместо линии (________) Разница между onSingleTapConfirmed и onSingleTapUp Показать мягкую клавиатуру, даже если подключена аппаратная клавиатура AutoCompleteTextView не показывает предложения в Android 2.3.5 Заполнение цвета в многоугольнике, а точки, пересекающиеся в Android ListView не обновляет уже видимые элементы Создайте программный андроид spinner Неподдерживаемый узел «item» в файле style.xml Тост не отображается при использовании в блоке catch Попытка иметь широковещательный приемник без фильтра