Как программно разблокировать и заблокировать экран в Android

#android

#Android

Вопрос:

Я создаю приложение, которое пробуждает и разблокирует телефон по событию.

Это работает нормально..

только при выходе из активности (или по истечении таймера .. когда вокруг никого нет) я использую reenableKeyguard (), чтобы восстановить блокировку клавиш в исходное состояние…

но затем он блокируется напрямую….

я бы хотел, чтобы обычный behavour…so когда пользователь выходит из моего приложения … блокировки еще нет. но после 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();


}
  

Пожалуйста, дайте мне знать, какие изменения мне нужно внести в приведенный выше код, чтобы он работал хорошо.

Ответ №1:

этот метод keygaurd работает менее чем для 2.0, если вы используете> = 2.2, затем измените подход. перейдите к power manager,

Ответ №2:

Согласно API администрирования устройства:

Вы также можете программно указать устройству на немедленную блокировку:

DevicePolicyManager mDPM; mDPM.lockNow();

И в соответствии с API:

Немедленно заблокируйте устройство, как если бы время ожидания экрана блокировки истекло в момент этого вызова.

Ответ №3:

Комментарии:

1. Вайнет, спасибо за вашу помощь, но это поможет заблокировать экран только через некоторое заданное время. Но мое приложение должно естественным образом блокировать экран после вызова функции onStop ().

Ответ №4:

вы можете использовать этот код для блокировки экрана устройства

  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"); 

    }