2014-02-13 55 views
1

我有一個應用程序,它應該在出現時解鎖屏幕。當Android上的活動出現時解鎖設備

我已經嘗試了一些東西,在.java文件和AndroidManifest中都寫了一些代碼,但是它不能解鎖設備。

這是我的代碼;

Uri ringtone = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); 
    r = RingtoneManager.getRingtone(getApplicationContext(), ringtone); 
    r.play(); 

    /* 
    PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE); 
    WakeLock wakeLock = pm.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "TAG"); 
    wakeLock.acquire(); 


    KeyguardManager keyguardManager = (KeyguardManager) getApplicationContext().getSystemService(Context.KEYGUARD_SERVICE); 
    KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("TAG"); 
    keyguardLock.disableKeyguard(); 


    window = getWindow(); 
    window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 
    window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
    window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 
    window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

    */ 

    PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE); 
    WakeLock mWakeLock = pm.newWakeLock((PowerManager.PARTIAL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "MyService"); 
    mWakeLock.acquire(); 
    mWakeLock.release(); 

    Window window = getWindow(); 
    window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 

這段代碼有什麼問題?

你能幫我嗎?

我已經試過你提供的所有答案,但依然沒有成功

+0

雖然您可以允許您的活動接收一些有限的交互,但設備仍然有效鎖定以用於其他目的,您實際上並沒有「解鎖」設備。 –

+0

能否請您詳細解釋一下 – erdemgc

+0

根本不允許第三方應用真正解鎖設備。這裏有很多關於這個話題的問題。 –

回答

0

你需要3個標誌,FLAG_DISMISS_KEYGUARDFLAG_SHOW_WHEN_LOCKEDFLAG_TURN_SCREEN_ON

import android.view.WindowManager.LayoutParams; 
private Window window; 

添加此到您的onCreate()

window = this.getWindow(); 
    window.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD); 
    window.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED); 
    window.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON); 

或使用onResume()方法它適用於我=)

protected void onResume() { 
    super.onResume(); 
    window = this.getWindow(); 
    window.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD); 
    window.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED); 
    window.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON); 
} 
+0

不幸的是,它不適用於我 – erdemgc

相關問題