2014-05-17 14 views
2

我想禁用屏幕鎖。顯示屏幕,並解僱它之後,我想再次鎖定屏幕,爲此我使用此代碼。Android如何禁用圖案鎖

後的onCreate()

PowerManager pm = (PowerManager) this.getSystemService(Context.POWER_SERVICE); 
    wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, "INFO"); 


    KeyguardManager km = (KeyguardManager) this.getSystemService(Context.KEYGUARD_SERVICE); 
    kl = km .newKeyguardLock("MyKeyguardLock"); 
    kl.disableKeyguard(); 

和解聘屏幕我使用,kl.reenableKeyguard()再次鎖定屏幕。

這是工作絕對好,如果我使用滑動屏幕鎖定,但如果我使用模式鎖定,此代碼不起作用。我知道這是可能的,有應用程序這樣做,但到目前爲止,我無法找到出路。

編輯:我發現這個代碼工作的關係,但不是在星系

回答

3

在需要時與您可以創建一個活動啓動:

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.getWindow().setFlags(
       WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 
         | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED 
         | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON, 
       WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 
         | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED 
         | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 
    } 

Wakelocks已被取消,只有窗口現在應該使用標誌。

編輯:它只適用於正常/透明的主題,它不適用於對話框主題。

+0

它什麼都不做 – Haris

+1

你在使用模擬器嗎?你使用的是什麼Android版本?它對我來說沒有問題。另外:它僅適用於具有普通主題的活動,即不能應用對話主題。 – greywolf82

+0

哦,我正在測試它在銀河快車和nexus上,我的代碼在nexus上運行良好,但不是在銀河系,但我在對話框主題上使用它:((讓我試試普通主題 – Haris