2010-01-29 24 views
60

Tengo una aplicación, cuando se inicia tengo que desactivar todos los botones en el dispositivo Android, logré desactivar la llamada final y otros. Necesito desactivar el botón de inicio clic. No debe producir ninguna acción al hacer clic.Android - ¿Es posible desactivar el clic del botón de inicio

Cualquier sugerencia muy apreciados

+4

Sí, estoy de acuerdo con sus comentarios, pero mi requisito es geniune, ya que la aplicación tiene algunas cosas predeterminadas que hacer, que digo inteligente compartir mi teléfono, como si estuviera transfiriendo mi teléfono a mi hijo, debería poder hacer lo que sea en mi aplicación en un solo clic, la aplicación no debe finalizar sin mi permiso. Proporcione la autorización para finalizar la aplicación. –

+1

Un buen ejemplo es Todler Lock. –

+0

@Jay Askren, Sí, es un buen ejemplo. ¿Tiene alguna Idea sobre la sugerencia del código para eso? –

Respuesta

29

Estoy bastante seguro de bloqueo para niños pequeños sólo utiliza un BroadcastReciever y se detecta Intent.ACTION_MAIN y la categoría Intent.CATEGORY_HOME - por eso la primera vez que lo lanza, le dice a marcar la casilla "utilizar esta aplicación como predeterminado "cuadro, y te hace seleccionar el bloqueo del niño.

lo tanto, no está bloqueando realmente el botón Inicio en absoluto, es sólo erigirse como el receptor de emisión por defecto para:

Intent i = new Intent(Intent.ACTION_MAIN); 
i.addCategory(Intent.CATEGORY_HOME); 

Al iniciar la cerradura del niño, es probable que establece un indicador interno, y si presiona el botón de inicio, simplemente trae la ventana al frente. Si la bandera no está configurada, probablemente inicie el Lanzador de forma explícita.

Espero que tenga sentido. Es solo una teoría, pero estoy casi 100% seguro de que así es como se hace.

+6

Lamento comentar este antiguo, pero solo para corregir algunas confusiones - no puede recibir 'startActivity()' 'Intents' a través de un receptor de difusión. Sin embargo, otra actividad puede declararse como una actividad INICIO, que luego le permitirá al usuario elegir una implementación de pantalla de inicio cuando presione el botón INICIO. – CommonsWare

5

Encontré una manera de abordar la tecla HOME. Para su aplicación configure el manifiesto como

<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.HOME" /> 
<category android:name="android.intent.category.DEFAULT" />        
<category android:name="android.intent.category.MONKEY"/> 

Ahora su aplicación es una aplicación Launcher alternativa.

Utilice el BAD, y desactivar el lanzador de aplicaciones usando el gestor de paquetes

pm disable com.android.launcher2 

Ahora, la pulsación de tecla Inicio se laways permanecer en la misma pantalla.

+0

puede mostrar más detalles, gracias – pengwang

+0

Sé que esta es una pregunta muy antigua, pero ¿por qué sería relevante para un problema de entorno de tiempo de ejecución? No estoy seguro de que pueda desactivar el lanzador programáticamente (sorprendido si pudiera) o incluso debería hacerlo. – Idistic

+0

Esta respuesta no parece ayudar, lo siento – shanabus

18

Agregar siguiente código a su actividad:

@override 

public void onAttachedToWindow() 
{ 
     this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);  
     super.onAttachedToWindow(); 
} 

Editar:

Esto funciona en todas las versiones de Android más antigua. Pero no funcionará en ICS y jelly bean y le dará accidente en aplicación

What does this 4 line java code means in android application?

+0

Si bien esto funciona para desactivar el botón de inicio, abre la pantalla de bloqueo en la parte superior de mi actividad en mi caso. Estoy tratando de hacer un reemplazo de pantalla de bloqueo, de ahí mi necesidad de desactivar el botón de inicio – Josh

+0

Interesante @Josh qué teléfono estás usando, en un droide increíble, aria. También lo que OS, 2.2 aquí – Idistic

+0

Sí se me olvidó decir que en esos dispositivos funciona perfectamente – Idistic

11

Añadir esto en su manifest.xml para su actividad principal:

<category android:name="android.intent.category.DEFAULT" /> 
<category android:name="android.intent.category.LAUNCHER" /> 
<category android:name="android.intent.category.HOME" /> 

el botón de inicio se siempre (re) iniciar su actividad. Trabaja en Froyo.

+2

Di +1 porque evita la salida, pero me pidió que seleccionara si mi aplicación era la aplicación predeterminada. Acer Tablet 3.1 – shanabus

+0

Esta es una mala solución y simplemente etiqueta su aplicación como un iniciador. Es posible que las personas cambien por error su iniciador predeterminado con tu aplicación. No quieres eso. – zeh

2

Otra adición a Jeffreys post, aquí es algo que funcionó para mí (y sigue permitiendo el tema translúcido)

@Override 
public void onAttachedToWindow() 
{ 
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);  
    super.onAttachedToWindow(); 
} 

Becuase hace que el bloqueo de teclas llegar, también se puede simplemente desactivar el bloqueo del teclado, mientras que la aplicación está en uso:

KeyguardManager keyguardManager = (KeyguardManager)getSystemService(KEYGUARD_SERVICE); 
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE); 
lock.disableKeyguard(); 

Esto funciona muy bien para hacer su propia aplicación teclado.

+0

Hola, esto parece útil para mi pregunta. ¿Me pueden ayudar con ese http://stackoverflow.com/questions/10800683/android-ics-native-lockscreen? –

+0

Esto funciona con un efecto secundario. Mi actividad se supone que debe tomar pantalla completa. El uso del código anterior lo revierte al tamaño normal de la pantalla, lo que expone la barra de estado de Android, lo que abre un agujero de seguridad que cualquier usuario puede llegar a otra parte de la aplicación a través de la barra de estado. – AndroidDev

5

here puede encontrar mi aplicación de muestra de Android que persiste en la página de inicio. Inicio, Atrás, Llamar, botón de encendido están deshabilitados. El usuario puede finalizar la aplicación solo escribiendo una contraseña.

+3

"El usuario debe seleccionar el administrador de inicio predeterminado cuando finaliza esta aplicación."- No es muy útil si lo único que quieres es deshabilitar los botones solo para tu propia aplicación sin estropear los lanzadores. – AndroidDev

+5

Sería preferible pasar el código relevante a la respuesta en lugar de que las personas abran el archivo comprimido y busquen el código. – Chloe

+0

irrelavent answer ... esta aplicación estropea el botón de inicio de inicio –

Cuestiones relacionadas