2013-05-13 8 views
3

Я использую Keyguard Manager в своей деятельности, чтобы разблокировать устройство, но он ведет себя странно. Я тестировал его с двумя устройствами, а Nexus работает нормально, но в Samsung Galaxy S он не работает.Keyguard Manager не работает должным образом

Мой код:

PowerManager pm = (PowerManager) ctx.getSystemService(Context.POWER_SERVICE); 

WakeLock wakeLock = pm.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP),"mini"); 

wakeLock.acquire(); 

KeyguardManager keyguardManager = (KeyguardManager) ctx. 

getSystemService(Context.KEYGUARD_SERVICE); 

KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("mini"); 

keyguardLock.disableKeyguard(); 

Может кто-нибудь помочь?

+0

Вы нашли решение для этого? У меня есть аналогичная проблема – asheinfeld

+0

@asheinfeld ya я найду решение – Meenal

ответ

4

Я нашел это решение, здесь mContext - это контекст вашей деятельности, я использую его за пределами действия.

if (android.os.Build.VERSION.SDK_INT <= android.os.Build.VERSION_CODES.FROYO) { 
      // only for gingerbread and newer versions 
      ((Activity) mContext).getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 
      ((Activity) mContext).getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 
      ((Activity) mContext).getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 

      KeyguardManager manager (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE); 
      KeyguardLock lock = manager.newKeyguardLock("abc"); 
      lock.disableKeyguard(); 

    } else { 

     KeyguardManager km = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE); 
     KeyguardLock keyguardLock = km.newKeyguardLock("TAG"); 
     ((Activity) mContext).getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 
     ((Activity) mContext).getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 

     keyguardLock.disableKeyguard(); 
     PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE); 
     WakeLock wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK 
        | PowerManager.ACQUIRE_CAUSES_WAKEUP 
        | PowerManager.ON_AFTER_RELEASE 
        | PowerManager.SCREEN_BRIGHT _WAKE_LOCK, "MyWakeLock"); 

     wakeLock.acquire(); 
    } 
+0

Спасибо, попробуем это! – asheinfeld

+0

Правильно ли проверена версия? Кажется, если версия <= FROYO делает код для ** новых ** версий? Разве это не должно быть наоборот? –

+0

Безопасно ли использовать KeyguardManager перед PowerManager? –

 Смежные вопросы

  • Нет связанных вопросов^_^