如何在android中以编程方式解锁和锁定屏幕

时间:2011-10-04 13:04:47

标签: android

我正在构建一个应用程序,可以在事件中唤醒和解锁手机。

这很好..

只有在离开活动时(或当计时器用完时...因为周围没有人)我使用reenableKeyguard()将键锁还原为origenal状态......

然后直接锁定....

我想要正常的行为......所以当用户退出我的应用程序时......还没有锁定。但是30秒后没有活动的电话进入睡眠并锁定。

我怎么能这样做...谢谢。

以下是我用过的代码:

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    getWindow().addFlags(
            LayoutParams.FLAG_DISMISS_KEYGUARD
            | LayoutParams.FLAG_SHOW_WHEN_LOCKED
            | LayoutParams.FLAG_TURN_SCREEN_ON
            | LayoutParams.FLAG_KEEP_SCREEN_ON
            );



    KeyguardManager manager = (KeyguardManager) getSystemService
    (Context.KEYGUARD_SERVICE);
    lock = manager.newKeyguardLock
    ("hh");

    lock.disableKeyguard();
  }


   protected void onStop() {
    // TODO Auto-generated method stub
    super.onStop();
    lock.reenableKeyguard();


}

让我知道在上面的代码中需要做些什么更改,以便它能很好地工作。

4 个答案:

答案 0 :(得分:1)

如果您使用> = 2.2,则此键盘锁定方法的工作时间小于2.0,然后更改方法。去找电力经理,

答案 1 :(得分:1)

根据Device Administration API

  

您也可以通过编程方式告诉设备立即锁定:

     

DevicePolicyManager mDPM; mDPM.lockNow();

根据API

  

立即锁定设备,就像锁定屏幕超时一样   在此次通话时已到期。

答案 2 :(得分:0)

答案 3 :(得分:0)

您可以使用代码锁定设备屏幕

 protected void onResume() {


     IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
        registerReceiver(mIntentReceiver, filter);
           }

 private BroadcastReceiver mIntentReceiver = new BroadcastReceiver(){

           public void onReceive(Context context, Intent intent) {


            System.out.println("phone locked"); 

    }