Android dispatchKeyEvent不适用于所有KeyEvent代码

Android dispatchKeyEvent不适用于所有KeyEvent代码,android,android-activity,android-softkeyboard,android-keypad,Android,Android Activity,Android Softkeyboard,Android Keypad,我有一个EditText,我尝试从我的活动中调用dispatchKeyEvent,将文本插入EditText,如下所示: public class MainActivity extends AppCompatActivity implements View.OnFocusChangeListener { String TAG = "test"; EditText editText; @Override protected void onCreate(Bundl

我有一个EditText,我尝试从我的
活动中调用
dispatchKeyEvent
,将文本插入
EditText
,如下所示:

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));
        }
    }
}

字母可以正常工作,但shift和capslock的
KeyEvents
没有任何作用。上面的代码将“lol”写入
EditText
,而不是预期的“lol”。为什么?

您可以使用KeyEvent()的另一个构造函数来使用如下移位元数据:

dispatchKeyEvent(new KeyEvent(0,0,KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_L,0,KeyEvent.META_SHIFT_ON));

资料来源:

我知道这是可以实现的,但这不是我想要的。