【问题标题】:How can i display Dialog box over locked screen like viber or Line messenger如何在 viber 或 Line messenger 等锁定屏幕上显示对话框
【发布时间】:2014-10-26 07:30:29
【问题描述】:

我需要显示一个对话框,无论用户屏幕锁定还是深度睡眠都显示。我目前的情况是:

  1. 广播接收器启动服务并获取WakeLock

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

  2. Service 使用以下设置启动 Activity

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

  3. Activity 启动 DialogFragment

问题是如果屏幕被锁定或处于睡眠状态,对话框不会出现。即使屏幕关闭或锁定,Viber 应用程序和 Line messenger 应用程序中的消息对话框也会弹出。他们是怎么做到的?

编辑

我发现当活动主题设置为 Theme.Holo.Light.NoActionBar.Fullscreen 或任何全屏主题时它可以工作。 :)

【问题讨论】:

    标签: android dialog wakelock screen-lock


    【解决方案1】:
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
    

    在我将 Activity 主题更改为

    后,这些标志对我有用
    Theme.Holo.Light.NoActionBar.Fullscreen
    

    【讨论】:

      【解决方案2】:

      您应该使用KeyGuardManager 自动解锁设备,然后获取您的唤醒锁。

          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.
      

      【讨论】:

      • newKeyguardLock 和 disableKeyguard 方法现在已弃用。如果屏幕被密码或图案锁定,它会起作用吗?
      • 使用 FLAG_DISMISS_KEYGUARD 和/或 FLAG_SHOW_WHEN_LOCKED 代替;如果屏幕被密码或图案锁定,我不确定
      • 好吧,我发现这些标志适用于全屏活动。为我工作,早些时候我使用的是 Theme.DeviceDefault.Light.Dialog.NoActionBar.MinWidth 。但是现在我将 Activity 的主题更改为“Theme.Holo.Light.NoActionBar.Fullscreen”并且它可以工作:)
      • 它是否可以通过密码和模式更新锁定屏幕,如果它有效或您找到任何解决方案
      • 是的,它也适用于锁定模式的屏幕
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      • 2011-06-24
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      相关资源
      最近更新 更多