studio programacion now móviles home google desarrollo desactivar curso como boton asistente aplicaciones android button override back-button

android - programacion - desactivar google now on tap



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

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 reaccionar 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 }


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

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


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

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/tvInfo" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <ToggleButton android:id="@+id/btnLock" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textOff="UnLocked" android:textOn="Locked" /> </LinearLayout>


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" }


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.


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


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 objetivo 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?