Anular el botón de inicio y el de atrás es caso de que un booleano sea verdadero

Me pregunto si puedo anular la acción de la parte posterior y el botón de inicio en algunos casos. Normalmente, estos botones deberían reactjsr como siempre, pero en el caso de que alguna configuración sea verdadera, quiero anular los botones y dejar que invoquen mis propios métodos.

Estoy usando estos dos métodos para anular estos botones:

@Override public void onBackPressed() { // call my backbutton pressed method when boolean==true } @Override public void onAttachedToWindow() { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); // call my homebutton pressed method when boolean==true } 

Me pregunto si puedo anular la acción de la parte posterior y el botón de inicio en algunos casos.

Sí, puede anular el botón Home .

He desarrollado una aplicación que deshabilita el botón duro, puede echar un vistazo. He tomado un botón de alternar que bloquea todos los botones para trabajar, excepto el botón de Encendido

 public class DisableHardButton extends Activity { /** Called when the activity is first created. */ TextView mTextView; ToggleButton mToggleButton; boolean isLock=false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mTextView=(TextView) findViewById(R.id.tvInfo); mToggleButton=(ToggleButton) findViewById(R.id.btnLock); mToggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub isLock=isChecked; onAttachedToWindow(); } }); } @Override public boolean dispatchKeyEvent(KeyEvent event) { if ( (event.getKeyCode() == KeyEvent.KEYCODE_HOME) && isLock) { mTextView.setText("KEYCODE_HOME"); return true; } else return super.dispatchKeyEvent(event); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if( (keyCode==KeyEvent.KEYCODE_BACK) && isLock) { mTextView.setText("KEYCODE_BACK"); return true; } else return super.onKeyDown(keyCode, event); } @Override public void onAttachedToWindow() { System.out.println("Onactivity attached :"+isLock); if(isLock) { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); } else { this.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION); super.onAttachedToWindow(); } } } 

main.xml

      

Llama a super.onBackPressed () para llamar al método normal. Ejemplo:

 @Override public void onBackPressed() { if (activated) { //doyourthing } else { super.onBackPressed() } } 

No, no puedes. Lo que puede hacer es superar el método y administrar el booleano dentro de él:

por ejemplo:

  public void onBackPressed() { // call my backbutton pressed method when boolean==true if (myCondition) { // take care of my needs } else // call super to let the back behavior be "normal" } 

En cuanto a anular el comportamiento del botón de inicio, no tiene suerte .

Sin embargo, si su aplicación es específica y tiene un público objective limitado, como aplicación entre organizaciones, quiosco de hospital, pedidos de restaurantes, puede intentar hacer que su aplicación sea Home (la aplicación de inicio). Puede encontrar un buen ejemplo aquí: Cómo escribir la aplicación Custom Launcher en Android

Y para anular los eventos clave hacia atrás, muchos ejemplos están ahí.

Por ejemplo:

  1. Capturar keypress con android
  2. Anular el botón Atrás para que funcione como el botón de inicio
  3. Android – ¿Cómo sobrescribir el botón “Atrás” para que no termine () mi actividad?

hacer que su variable variable booleana

 boolean temp; @Override public void onBackPressed() { // call my backbutton pressed method when boolean==true if(temp) //your methode else finish(); } 

Yo uso esto:

 public void onBackPressed() { switch (screen) { case 1: screen = 99; setContentView(R.layout.menu); break; case 99: finish(); break; } return; } 

Cuando estoy en otra pantalla (a diferencia de la pantalla de menú), configuro la pantalla de variables en 1. Cuando presiono el botón Atrás, vuelve a la pantalla del menú (en lugar de eliminar la aplicación). y le da a la variable de pantalla el número 99, y luego cuando presiona el botón Atrás nuevamente, mata la aplicación.

Sin embargo, no puede cambiar el botón de inicio.