2012-04-09 35 views
8

Estoy haciendo una aplicación patentada para una empresa que nunca la lanzará al Android Market (o Play Store, supongo ahora) en Ice Cream Sandwich (Android 4.0).Deshabilitar botón de inicio en Android ICS (4.0)

Necesito desactivar la página de inicio para que los usuarios no puedan desinstalar el software maliciosamente ni eliminar los datos que la aplicación capture. Esta última versión es la primera escrita en 4.0, las versiones anteriores fueron escritas en 2.2 y 3.2.

Para deshabilitar el botón de Inicio en 2.2, asocié la aplicación como un reemplazo del hogar, por lo que el botón acaba de reabrir la aplicación, pero ya no puedo usar este método, ya que eso nos impide realizar las actualizaciones de la aplicación . (no queremos dar al usuario la opción de volver a seleccionar un valor predeterminado de inicio, ya que ello conducirá a la eliminación de datos

el código que tengo para disableing el botón de inicio en 3.2 es:

@Override 
public void onAttachedToWindow() { 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); 
    super.onAttachedToWindow(); 
} 

y, en onCreate:

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

Pero cuando ejecuto el mismo código que funcionaba en mi tableta 3.2, no funciona en mi tableta 4.0.

Me preguntaba si hay una API o método nuevo que 4.0 tenga que logre el mismo efecto que tengo actualmente en mi implementación 3.2.

Gracias por cualquier ayuda o dirección.

Adam

+0

Tu aplicación se comporta como malware, ya que le quita el control del dispositivo al usuario. Android 4.0+ está diseñado para evitar eso exactamente. – Dubs

Respuesta

6

¿Qué tal una solución ..

Escribir una segunda aplicación que implementa la pantalla de inicio, cuando se pulsa el botón de la pantalla de inicio esta aplicación llegará al primer plano. Desde esta aplicación, debes volver a colocar tu aplicación principal en primer plano. La única pega es que su aplicación de la pantalla de inicio nunca debe necesitar una actualización, pero debería poder actualizar la aplicación principal libremente sin la pestaña que le pide configurar el inicio automático.

Espero que tenga sentido ..

+0

Tu explicación tiene sentido, y funcionó perfectamente. Hubo solo un pequeño parpadeo desde mi aplicación principal hasta el secuestrador de la casa ... pero eso es lo que se espera al cambiar de aplicación. Al principio, moví la aplicación de secuestro a la parte posterior, lo que ayudó a reducir parte del parpadeo. – adamacdo

+0

el usuario aún puede anular la selección de esta aplicación –

+0

También necesito el mismo tipo de escenario, pero podemos salir de la aplicación usando el eclipse DDMS y también el botón de inicio prolongado permite al administrador de tareas. ¿hay alguna manera de desactivar la pulsación larga del botón de inicio? – DAS

0

No .... No se puede botón de inicio para Android4.0 anular al menos .. utilizando la solución de "hotveryspicy" Y, Si desea responder a la tecla INICIO, implementar una pantalla de inicio.

+0

No puedo contar la aplicación como pantalla de inicio, porque cuando actualicemos la aplicación, el usuario podría seleccionar el stock Home como el iniciador, lo que permitiría eliminar datos confidenciales ... que es lo número uno Necesito evitar – adamacdo

Cuestiones relacionadas