La respuesta a esta pregunta debe ser doble. Está determinado por la forma en que se generó la clave. Si se presionó la tecla de hardware, ambos enfoques descritos a continuación son válidos. Si se presionó la tecla de software, depende del contexto real.
1.) Si la clave fue resultado de la presión sobre el teclado en pantalla que se obtuvo mediante pulsación larga de la tecla Menú:
Necesita anular cuidadosamente la siguiente función:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_A:
{
//your Action code
return true;
}
}
return super.onKeyDown(keyCode, event);
}
2 .) Si su actividad contiene EditText, y se obtuvo un teclado de teclado, entonces el primer enfoque no funciona porque el evento de tecla ya fue consumido por EditText. Es necesario utilizar el texto cambiado Oyente:
mMyEditText.addTextChangedListener(new TextWatcher()
{
public void afterTextChanged(Editable s)
{
}
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{
/*This method is called to notify you that, within s, the count characters beginning at start are about to be replaced by new text with length after. It is an error to attempt to make changes to s from this callback.*/
}
public void onTextChanged(CharSequence s, int start, int before, int count)
{
}
);
¿Has probado la aproximación sugerida? ¿Fue útil? – Zelimir
Esto solo captura eventos de teclas duras como la parte posterior y el menú, pero no eventos de teclas de entrada. – ozmank
¿Estás seguro de eso? Funciona correctamente para mí también para cartas. ¿En qué teléfono has probado? – Zelimir