"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:
- ¿Hay alguna manera de utilizar un diseño .xml para una lockscreen
- ¿Puedo escribirlo como una aplicación normal?
No quiero referencias a aplicaciones existentes en el mercado.
- Notificación de pantalla de bloqueo de Android Vista personalizada con ripple y doble toque
- Creación de LockScreen personalizado en android
- ¿Cómo iniciar una nueva actividad desde lockscreen?
- Iniciar actividad externa mientras el teléfono está bloqueado
- La actividad de diálogo se oculta bajo la pantalla de llamada cuando el bloqueo seguro está activado, android
- Media Session Compat no muestra controles Lockscreen en Pre-Lollipop
- Android Lollipop - controles de música de pantalla de bloqueo
- La pantalla de bloqueo para Android no funciona correctamente con Android
- ¿Cómo usar la pantalla de bloqueo de contraseña predeterminada en nuestra aplicación de Android?
- Widget de la pantalla de bloqueo de Android
- ¿Cómo realizar una acción de notificación (clic) en la pantalla de bloqueo?
- ¿Cómo puedo mostrar la notificación en la pantalla de bloqueo de Android?
- Obtención dinámica del nombre del paquete de pantalla de bloqueo de android
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