2014-09-02 66 views
1

我需要顯示一個對話框,可以顯示與用戶屏幕鎖定或處於深度睡眠狀態無關的對話框。我的當前場景爲:如何在viber或Line Messenger的鎖定屏幕上顯示對話框

  1. 廣播接收機創始服務並獲取喚醒鎖定

    PowerManager的 經理=(電源管理器)context.getSystemService(Context.POWER_SERVICE); lockStatic = mgr.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, LOCK_NAME_STATIC);

  2. 服務啓動一個活動用以下設置

    getWindow()addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD)。 getWindow()。addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);開始DialogFragment

問題

  • 活動是,如果屏幕被鎖定或睡眠對話不會出現。即使屏幕處於關閉或鎖定狀態,Viber應用程序和Line messenger應用程序彈出窗口中的消息對話框。他們怎麼做?

    編輯

    嗯,我發現,當活動主題設定爲Theme.Holo.Light.NoActionBar.Fullscreen或任何FULLSCREEN主題它的工作原理。 :)

  • 回答

    0

    您應該使用KeyGuardManage r自動解鎖設備,然後獲取您的Wake Lock。

    KeyguardManager kgm = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE); 
    boolean isKeyguardUp = kgm.inKeyguardRestrictedInputMode(); 
    KeyguardLock kgl = kgm.newKeyguardLock("Your Activity/Service name"); 
    
    if(isKeyguardUp){ 
    kgl.disableKeyguard(); 
    isKeyguardUp = false; 
    } 
    
    wl.acquire(); //use your wake lock once keyguard is down. 
    
    +0

    newKeyguardLock和disableKeyguard方法現在已被棄用。如果屏幕被密碼或圖案鎖定,它會工作嗎? – isumit 2014-09-02 06:35:32

    +0

    改爲使用FLAG_DISMISS_KEYGUARD和/或FLAG_SHOW_WHEN_LOCKED;如果屏幕被鎖定了密碼或圖案我不確定它 – Rahul 2014-09-02 07:18:05

    +0

    那麼我發現這些標誌與FullScreen活動一起使用。爲我工作,早些時候我使用Theme.DeviceDefault.Light.Dialog.NoActionBar.MinWidth。但現在我改變了活動的主題爲「Theme.Holo.Light.NoActionBar.Fullscreen」,它的工作原理:) – isumit 2014-09-02 07:20:43

    1
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
    

    這些標誌爲我工作後,我改變了我的活動主題,以

    Theme.Holo.Light.NoActionBar.Fullscreen 
    
    相關問題