2010-12-28 14 views
22

He estado intentando bloquear el dispositivo a través del programa. Pero aún no puedo encontrar la solución. Quiero bloquear Android froyo2.2 a través del programa. He intentado con keyguardmanager y DeviceAdminManager.Bloquear el dispositivo Android programáticamente

Mi aplicación es para bloquear de forma remota el dispositivo. Cuando se recibe un mensaje con algunas palabras de código para bloquear, entonces bloquea el teléfono. He encontrado muchos programas Api_demo como solución, pero no puedo extraer el código de bloqueo solo de eso y encontrar una solución.

+0

de alguna manera lo obtuve ... – adithi

+4

luego suministre la respuesta usted mismo, y acéptelo – pufferfish

Respuesta

15

La clase de actividad debe ser clase interna y la clase Outter debe extenderse DeviceAdminReceiver

public class adminActivity extends DeviceAdminReceiver { 

    public static class Controller extends Activity { 

        DevicePolicyManager mDPM; 
      ComponentName mDeviceAdminSample; 

     protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 

       mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE); 
       mDeviceAdminSample = new ComponentName(Controller.this, 
         adminActivity.class); 
     } 
    } 
} 

Para bloquear el dispositivo de escribir el código en el evento en el que se utiliza para bloquear

if (active) { 
mDPM.lockNow(); 
} 

Si DeviceAdmin es habilitado entonces el teléfono estará bloqueado. Para habilitar el administrador del dispositivo, se invoca el intento DevicePolicyManager y el usuario debe habilitarlo.

Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); 
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample);   
+3

adithi waht es securemeAdmin y activo? Tengo el mismo problema. ¿Puedes explicar – arpit

+3

alguien puede por favor decir lo que está activo y lo que es secureadmin aquí? – Reyjohn

+0

Este código anterior está tomado de DeviceAdminSample presente en muestras de SDK de Android que están disponibles con Android SDK. APIDemos -> aplicación – Sundeep

3

Para solucionar esta tarea, puede echar un vistazo a NoKeyGuard source code y más precisamente a una clase de servicio y la clase NoKeyGuard KeyguardLockWrapper.

para desbloquear el dispositivo de escribir el código en el evento en el que se utiliza para desbloquear:

clase
Context context= getApplicationContext(); 
    KeyguardManager _guard = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); 
    KeyguardLock _keyguardLock = _guard.newKeyguardLock("KeyguardLockWrapper"); 
    //to disable 
    _keyguardLock.disableKeyguard(); 
    //to enable 
    _keyguardLock.reenableKeyguard(); 
+8

Esto ahora está obsoleto. ¡No utilice! – Hawk

1

La actividad debe ser la clase interna y la clase externa debe extenderse DeviceAdminReceiver

public class adminActivity extends DeviceAdminReceiver { 

    public static class Controller extends Activity { 

       DevicePolicyManager mDPM; 
     ComponentName mDeviceAdminSample; 

    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE); 
      mDeviceAdminSample = new ComponentName(Controller.this, 
        adminActivity.class); 
    } 
} 
} 
-3
 WindowManager.LayoutParams lp = getWindow().getAttributes(); 
     lp.screenBrightness = 0; 
     getWindow().setAttributes(lp); 
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
+0

Esto solía funcionar, por ejemplo, en Android 2.3, pero ya no funciona. – DagW

Cuestiones relacionadas