由于我的应用程序中存在安全限制,如果用户在2分钟内没有任何活动,则会注销用户。
在我的MainActivity中,我覆盖了 dispatchTouchEvent ,每次用户与该应用进行交互时都会调用它。
但是,如果用户在应用中输入内容,则不会调用 dispatchKeyEvent 。因此,如果用户输入的时间超过2分钟,则该应用会将其踢出。
如何在不添加TextWathcer的情况下捕获应用程序中的任何按键事件?
答案 0 :(得分:1)
dispatchKeyEvent
接受一个 KeyEvent 对象作为参数。和
From Android documentation:
注意:使用KeyEvent类和 相关的API,您应该期望此类键盘事件只会出现 通过硬件键盘。您永远不要依赖接收密钥 软输入法(屏幕键盘)上任何键的事件。
由于软输入法可以使用多种创新的输入方式 文字,无法保证软键盘上的任何按键都会 生成关键事件:这由IME自行决定,然后 不鼓励发送此类事件。你永远不要依靠 接收软输入法上任何键的KeyEvent。尤其是, 默认的软件键盘将永远不会将任何按键事件发送给任何 定位Jelly Bean或更高版本的应用程序,并且只会发送事件 对于某些按删除和返回键的应用程序 以冰淇淋三明治或更早的时间为目标。
要从屏幕键盘上调度按键事件,必须将textWatcher添加到您的editText中。
例如:
myEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
}
});