2012-08-14 8 views
44

He escrito una aplicación que bloquea el teléfono Android de forma remota. Es entonces cuando se envía un código especial desde el servidor, luego la aplicación bloquea el teléfono según el código especial. Este es el código que estoy usando.Cómo desbloquear el teléfono Android a través del código de forma remota

if (!mDPM.isAdminActive(mDeviceAdminSample)) { 
     // try to become active – must happen here in this activity, to get result 
     Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); 
     intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,mDeviceAdminSample); 
     intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"Admin is added to do security operation."); 
     startActivityForResult(intent, 0); 
     } else { 
     // Already is a device administrator, can do security operations now. 
     mDPM.lockNow(); 
     } 

El código anterior funciona y bloquea el teléfono.

Puedo desbloquear el teléfono ingresando la contraseña desde el teclado virtual. ¿Hay alguna forma de desbloquearlo a través del código?

Mi pregunta es cómo desbloquear el teléfono a través de código (Este desbloqueo se debe hacer de forma remota en la forma que he explicado para el bloqueo)

+0

¿Qué es min API y has agregado uses-permission en tu mainManifest? –

Respuesta

1

Tenga en cuenta que no soy un desarrollador de Android, pero:.

Si mira this, parece que puede pedirle al WindowManager que cierre la protección de la llave si tiene el permiso correcto, incluso si se encuentra en el modo de "bloqueo seguro".

+0

No, no funcionará ya que estoy usando una contraseña para bloquear – kehnar

+0

¿Lo intentó? – HonkyTonk

+0

sí, lo he comprobado. – kehnar

2

probar esto

KeyguardManager manager = (KeyguardManager)context.getSystemService(KEYGUARD_SERVICE); 
kl = manager.newKeyguardLock("my-remote-app"); 
kl.disableKeyguard(); 

// para volver a habilitar el bloqueo de teclas en la salida (si es necesario)

onDestroy() { 
kl.reenableKeyguard(); 
} 

esto funciona < = ICS. Esta es una API obsoleta, le sugirieron que utilice los indicadores de WindowManager para obtener un efecto similar. Aunque no logré generar el mismo efecto usando el WindowManger.

Espero que esto ayude,

+0

Ya verificado. No funciona. – kehnar

+0

Lo he usado en GNote N7000 con ICS y funciona. ¿Pusiste el permiso adicional para usar KeyguardManager? De lo contrario, su intento puede ser asesinado debido a SecurityException. – fadedreamz

+0

También puede agregar el indicador NEW_TASK, al generar el intento de desbloqueo. – fadedreamz

5

no creo que su objetivo de desbloqueo remoto es alcanzable.

La forma en que se configura Android, es que muchas aplicaciones pueden tener privilegios de administrador de dispositivos, y cualquier administrador de dispositivos puede emitir un comando de bloqueo, pero el desbloqueo tiene que provenir del usuario.

Puedo sugerir una cosa para simplificar esto: su aplicación podría tratar de eliminar la contraseña de bloqueo de teclas, y luego el usuario puede usar el dispositivo sin un código simplemente deslizando un dedo en la pantalla.

Ahora hay un inconveniente en lo que sugerí, si su aplicación no es el único administrador del dispositivo. En ese caso, alguna otra aplicación de administrador podría establecer una longitud mínima de contraseña (o alguna otra restricción de contraseña) que evitaría que su aplicación borre la contraseña de bloqueo de pantalla.

Si su objetivo es ayudar a un usuario que olvidó su contraseña de bloqueo de pantalla, su servidor podría inventar una nueva contraseña, informar al usuario cuál es la nueva contraseña y también enviar la nueva a su aplicación y su la aplicación podría aplicar la contraseña. El usuario puede desbloquear el teléfono. No te preocupes, no es tan complicado como parece.

4

Perdón por escribir que - No hay forma de desbloquear el teléfono desde el código. Si encuentra alguna manera de hacerlo, no hay garantía para trabajar. Por lo tanto, no hay manera de desbloquear de forma remota, escribir pantallas de bloqueo personalizadas, etc.

1

Según mi conocimiento, no podemos desbloquear el teléfono protegido por contraseña programáticamente.

+7

Ni siquiera tiene un nombre. – Shark

6

Creo que no puede anular el bloqueo de pantalla incorporado a menos que haga su propio dispositivo como Samsung y HTC.Sin embargo, al hacer que sus clientes utilicen su propia aplicación similar a un bloqueo de pantalla, es probable que logre lo que intenta hacer.

0

Una solución sería escribir una "pantalla de bloqueo personalizada". Claro, no es la manera más fácil, pero funcionaría, ya que puede hacer todo lo que quiera con su propia pantalla de bloqueo. Si está considerando esa solución, no dude en ponerse en contacto conmigo, le daré algunos enlaces útiles. ¡Salud!

+0

Android no admite pantallas de bloqueo de vestuario –

+0

@Ilya_Gazman Casi lo admite, pero no con una API oficial. Para tener una pantalla de bloqueo personalizada, tu aplicación deberá ser el iniciador predeterminado. Aquí hay algunas aplicaciones de ejemplo: http://www.androidauthority.com/best-music-player-apps-for-android-208990/ https://www.androidpit.com/best-android-lock-screen-apps –

+0

@androiddeveloper Creo que pueden pasar muchas cosas en 4 años. lol –

Cuestiones relacionadas