Я создал пользовательскую клавиатуру для приложения стикеров. Который имеет функцию поиска стикеров и обмена на WhatsApp, Facebook и т. Д.
Но моя проблема в том, что я не могу изменить фокус с поля редактирования WhatsApp на пользовательский текст редактирования на моей клавиатуре.
В настоящее время, когда я пытаюсь коснуться редактирования текста, реализованного на клавиатуре, и написать какой-то текст, он автоматически редактируется по умолчанию в поле редактирования WhatsApp, а не в пользовательском тексте редактирования.
Любое решение ...
это мой код ..
keyboard_view.setOnKeyboardActionListener(new KeyboardView.OnKeyboardActionListener() {
@Override
public void onPress(int i) {
}
@Override
public void onRelease(int i) {
}
@Override
public void onKey(int primaryCode, int[] ints) {
InputConnection ic = getCurrentInputConnection();
playClick(primaryCode);
switch (primaryCode) {
case Keyboard.KEYCODE_DELETE:
getCurrentInputConnection().sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL));
break;
case Keyboard.KEYCODE_SHIFT:
caps = !caps;
keyboard.setShifted(caps);
keyboard_view.invalidateAllKeys();
break;
case android.inputmethodservice.Keyboard.KEYCODE_DONE:
if (isSearched){
searchQuery();
frame_contain.setVisibility(View.GONE);
frame_container_search.setVisibility(View.VISIBLE);
keyboard_view.setVisibility(View.GONE);
search_view_items.setVisibility(View.VISIBLE);
callAdapterForSearchedStickers();
isSearched = false;
break;
}else {
frame_contain.setVisibility(View.GONE);
frame_container_search.setVisibility(View.GONE);
keyboard_view.setVisibility(View.VISIBLE);
search_view_items.setVisibility(View.GONE);
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER));
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_ENTER));
break;
}
case Keyboard.KEYCODE_MODE_CHANGE:
if (KeyboardService.afroemojiEnabled(getApplicationContext())) {
InputMethodManager imm = (InputMethodManager) getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showInputMethodPicker();
} else {
startActivity(new Intent("android.settings.INPUT_METHOD_SETTINGS"));
}
break;
case -100:
mainBoard.setBackgroundColor(Color.parseColor("#ffffff"));
ic.deleteSurroundingText(1, 0);
packNameLabel.setVisibility(View.VISIBLE);
stickerView.setVisibility(View.VISIBLE);
keyboard_view.setVisibility(View.GONE);
frame_contain.setVisibility(View.VISIBLE);
share_layout.setVisibility(View.VISIBLE);
break;
case 82:
keyboard_view.setKeyboard(numerice_keyboared);
keyboard_view.setPreviewEnabled(false);
break;
case 23:
keyboard_view.setKeyboard(keyboard);
keyboard_view.setPreviewEnabled(false);
break;
default:
char code = (char) primaryCode;
if (Character.isLetter(code) && caps) {
code = Character.toUpperCase(code);
}
ic.commitText(String.valueOf(code), 1);
}
}
@Override
public void onText(CharSequence charSequence) {
}
@Override
public void swipeLeft() {
}
@Override
public void swipeRight() {
}
@Override
public void swipeDown() {
}
@Override
public void swipeUp() {
}
});