"Bloquear pantalla" con contraseña de seguridad personalizada

He mirado a través de muchas preguntas similares, y he descubierto que no es posible hacer una pantalla de bloqueo como los armarios androide estándar. Lo que es posible es hacer una aplicación que deshabilita la LockScreen y utiliza un "bloqueo" diferente en lugar del estándar. Estoy pensando en hacer una lockscreen personalizada con un tipo diferente de bloqueo. Lo que no sé es posible es:

  1. ¿Hay alguna manera de utilizar un diseño .xml para una lockscreen
  2. ¿Puedo escribirlo como una aplicación normal?

No quiero referencias a aplicaciones existentes en el mercado.

Creo que tienes razón porque no encontré una manera de reemplazar el lockscreen original tampoco. Como usted dijo, podemos deshabilitar el original y falsificar otro.

Tengo un concepto y usted puede encontrar esta página útil también: http://chandan-tech.blogspot.com/2010/10/handling-screen-lock-lock-in-android.html

Inhabilita el original, agrega un listener a ACTION_SCREEN_ON, y una vez que se dispara, muestra tu lockscreen falsa, ya partir de ahora puedes escribirla como una aplicación normal y creo que el diseño xml es totalmente práctico.

Para implementarlo realmente, un servicio también debe hacerse y tiene que ejecutarse con el inicio del sistema. En su actividad también debe desactivar la barra de notificación y los botones.

Puede intentar reemplazar KeyguardManager

KeyguardManager.KeyguardLock key; KeyguardManager km=(KeyguardManager)getSystemService(KEYGUARD_SERVICE); //depreciated key=km.newKeyguardLock("IN"); 

Usted debe insertar esto en un service.Go como algo como:

 public class LockService extends Service{ BroadcastReceiver receiver; @override @SuppressWarnings("deprecation") public void onCreate(){ KeyguardManager.KeyguardLock key; KeyguardManager km=(KeyguardManager)getSystemService(KEYGUARD_SERVICE); //depreciated key=km.newKeyguardLock("IN"); IntentFilter filter=new IntentFilter(Intent.ACTION_SCREEN_ON); filter.addAction(Intent.ACTION_SCREEN_OFF); filter.addAction(Intent.ACTION_BOOT_COMPLETED); receiver=new LockscreenReceiver(); registerReceiver(receiver,filter); super.onCreate(); } 

Y luego en LockscreenReceiver, debe implementar esta acción:

 public class LockscreenReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context,Intent intent){ String action=intent.getAction(); //if the screen was recently enabled, do this: //If the screen was just turned on or it just booted up, start your Lock Activity if(action.equals(Intent.ACTION_SCREEN_OFF) || action.equals(Intent.ACTION_BOOT_COMPLETED)) { Intent i = new Intent(context, MainActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } } } 

Después, debe registrarse o llamar al servicio en MainActivity

 startService(new Intent(this,LockscreenService.class)); 

Para ver esto en acción, vaya a https://github.com/thomasvidas/Simple-Lockscreen

  • ¿Cómo probar widgets de pantalla bloqueada de Android en un emulador?
  • Activar o desactivar la pantalla PatternLock del código
  • Método getWindow () no puede utilizar
  • Android: detecta pulsaciones de teclas en Android cuando la pantalla está bloqueada
  • Lockscreen de Android ICS nativo
  • Unity3D Android Lockscreen no se muestra cuando la pantalla se agota. (Wakelock?)
  • Cómo deshabilitar la pantalla de desbloqueo programáticamente
  • La pantalla de bloqueo se muestra entre las actividades
  • Personalización de la funcionalidad de la pantalla de bloqueo de Android?
  • Controles del reproductor de medios en la notificación
  • Técnicas de implementación de la pantalla de bloqueo personalizado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.