Bloquee el dispositivo Android programáticamente

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

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 progtwigs Api_demo como solución, pero no puedo extraer el código de locking solo de eso y encontrar una solución.

La clase de actividad debe ser de clase interna y la clase de salida debe extender 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, escriba el código en el caso de que use para bloquear

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

Si DeviceAdmin está habilitado, el teléfono se bloqueará. Para habilitar el administrador del dispositivo, se invoca el bash DevicePolicyManager y el usuario debe habilitarlo.

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

Para resolver esta tarea puede echar un vistazo al código fuente NoKeyGuard y más precisamente a una clase de servicio NoKeyGuard y una clase KeyguardLockWrapper.

Para desbloquear el dispositivo, escriba el código en caso de que use para desbloquear:

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

La clase de actividad debe ser la clase interna y la clase externa debe extender 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); } } } 
  WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.screenBrightness = 0; getWindow().setAttributes(lp); getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);