Android – ¿Es posible desactivar el botón de clic de inicio
Tengo una aplicación, cuando se lanza tengo que deshabilitar todos los botones en el dispositivo Android, he tenido éxito en la desactivación final de llamadas y otros. Necesito desactivar el botón de inicio del botón. No debe producir ninguna acción en el tecleo.
Cualquier sugerencia muy apreciada
- Cómo reasignar una imagen de 9 parches mediante programación a un ImageView?
- Los widgets configurados con android: configure recibirán onUpdate aunque la configuración no esté terminada
- Android: Iniciar actividad a través de enlace en TextView
- Crear una burbuja de chat en Android
- ¿Cómo tot desplazarse al final de un android TextView?
- Android equivalente a CoreText
- Android - ListView y la etiqueta
- No hay manera de setProgressDrawable en RemoteViews
- Edición de la galería Android: el tamaño de la galería es mayor de lo esperado
- Cómo capturar los cambios de tamaño de widget en dispositivos donde onAppWidgetOptionsChanged no se llama?
- ¿Por qué el teclado levanta el tabhost a la tapa?
- No se puede obtener elipsis para trabajar en Android
- Android obtener la posición del elemento seleccionado en gridview
Estoy seguro de que Toddler Lock sólo utiliza un BroadcastReciever y escucha Intent.ACTION_MAIN
y la categoría Intent.CATEGORY_HOME
– por eso, cuando lo Intent.CATEGORY_HOME
por primera vez, te indica que debes marcar la casilla "usar esta aplicación como predeterminada" y hacerte Seleccione el bloqueo del niño pequeño.
Por lo tanto, no está realmente bloqueando el botón Inicio en absoluto, sino que se está configurando como el receptor de difusión predeterminado para:
Intent i = new Intent(Intent.ACTION_MAIN); i.addCategory(Intent.CATEGORY_HOME);
Cuando se inicia Lock Toddler, que probablemente establece una bandera interna, y si presiona el botón de inicio, sólo trae la ventana al frente. Si la bandera no está establecida, es probable que lance Launcher explícitamente.
Espero que tenga sentido. Es sólo una teoría, pero estoy casi 100% seguro de que así es como se hace.
Agregue el código siguiente a su actividad:
@override public void onAttachedToWindow() { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); }
Editar:
Esto funciona en todas las versiones anteriores de android. Pero no funcionará en ICS
y jelly bean y te dará un crash en la aplicación
¿Qué significa este código java de 4 líneas en la aplicación android?
Añada 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 HOME siempre reanudará su actividad. Trabajos en Froyo.
Aquí puedes encontrar mi aplicación de ejemplo para Android que persiste en la página principal. Los botones Inicio, Atrás, Llamar, Alimentación están desactivados. El usuario sólo puede finalizar la aplicación escribiendo una contraseña.
Encontré una forma de abordar la clave HOME. Para su aplicación, establezca 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 ur la aplicación es una aplicación de lanzador alternativo.
Utilice el adb y desactive la aplicación del lanzador mediante el administrador de paquetes
pm disable com.android.launcher2
Ahora la tecla de inicio de prensa permanecerá en la misma pantalla.
Una adición más al poste de Jeffreys, aquí es algo que trabajó para mí (y todavía permite el tema translúcido)
@Override public void onAttachedToWindow() { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); super.onAttachedToWindow(); }
Debido a que hace que el bloqueo de teclado aparezca, también podría desactivar el bloqueo de teclado mientras 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 tu propia aplicación de protección de teclado.