【问题标题】:how to show popup Activity or Dialog when phone is locked?手机锁定时如何显示弹出活动或对话框?
【发布时间】:2014-12-09 23:28:28
【问题描述】:

我试图在手机锁定时显示活动或对话框。 我曾尝试使用 WakeLock,但它不起作用,而且我只能在手机解锁后才能看到活动?

这样做的正确方法是什么?

【问题讨论】:

    标签: android


    【解决方案1】:

    要在不关闭键盘保护的情况下显示活动,请尝试以下操作:

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    setContentView();
    

    【讨论】:

    • 谢谢我找到了这个 2,这是更好的解决方案,但前提是你使用 android 2.0 +
    • 相当老套,但它做了它应该做的!
    【解决方案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.
    

    【讨论】:

      【解决方案3】:

      要在锁定屏幕上显示一个弹出窗口,试试这个,来自我的另一个 answer

      AlertDialog alertDialog = new AlertDialog.Builder(context).create();
              alertDialog.getWindow().setType(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
              alertDialog.show();
      

      要在锁定屏幕上显示活动,或者在活动开始时基本上移除锁定屏幕,请尝试以下操作:

      public void onCreate(Bundle savedInstanceState){
           getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
           ...
      }
      

      这两个选项都需要 api 5+

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-25
        • 1970-01-01
        相关资源
        最近更新 更多