以编程方式lockingandroid设备

我一直试图通过程序locking设备。 但我仍然无法find解决scheme。 我想通过程序lockingandroid froyo2.2。 我曾尝试keyguardmanager和DeviceAdminManager。

我的应用程序是远程locking设备。 当收到消息时用一些代码字locking,然后locking手机。 我已经find许多Api_demo程序作为解决scheme,但我不能从中提取锁代码,并find解决scheme。

活动类应该是内部类,外部类应扩展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); } } } 

要locking设备,请在您使用locking的事件中写入代码

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

如果DeviceAdmin已启用,则手机将被locking。 要启用设备pipe理,DevicePolicyManager意图被调用,并且应该由用户启用。

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

为了解决这个问题,你可以看看NoKeyGuard的源代码 ,更确切地说是一个NoKeyGuard服务类和KeyguardLockWrapper类。

解锁设备在您使用解锁的情况下编写代码:

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

活动类应该是内部类,外部类应该扩展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);