以编程方式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);