У меня есть EditText и я пытаюсь вызвать dispatchKeyEvent
из моего Activity
вставить текст в EditText
так:Android dispatchKeyEvent не работает для всех KeyEvent кодов
public class MainActivity extends AppCompatActivity implements View.OnFocusChangeListener {
String TAG = "test";
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate: ");
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.edittext);
editText.setOnFocusChangeListener(this);
}
@Override
public void onFocusChange(View v, boolean hasFocus) {
Log.d(TAG, "onFocusChange: "+hasFocus);
if(hasFocus) {
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_SHIFT_LEFT));
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_SHIFT_LEFT));
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_L));
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_O));
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_L));
}
}
}
Письма работают нормально, но KeyEvents
для сдвига и CapsLock делать ничего. Вышеприведенный код записывает «lol» в EditText
вместо «Lol», который ожидался. Зачем?
Я знаю, что это может быть достигнуто, как это, но это не то, что я спрашиваю. – batati