Android的浮动窗口加上FLAG_SHOW_WHEN_LOCKED失败

A--*_*--C 7 user-interface android styles

我的应用程序在锁定屏幕之前向用户显示一个对话框.这是一个包含DialogFragments的简单Activity(来自支持库,因为这个应用程序在2.2+上运行).

由于显示这些对话框的实际活动不是Android标准的浮动窗口,

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
Run Code Online (Sandbox Code Playgroud)

工作得很好.

但是,我在想我会使用一个看起来像Dialog的Activity.但是,所有Dialog主题(Holo等)都有这个项目:

<item name="android:windowIsFloating">true</item>
Run Code Online (Sandbox Code Playgroud)

这由于某种原因导致窗口标志被完全忽略.有趣的是,用户解锁屏幕后会显示活动.

为什么会如此,是否有办法实现呢?

Him*_*ani 4

遭受同样的问题。在这个问题上唯一有效的似乎是

KeyguardManager  myKeyGuard = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
myLock = myKeyGuard.newKeyguardLock("tagName");
myLock.disableKeyguard(); 
Run Code Online (Sandbox Code Playgroud)

不要忘记在清单中使用 keyguard 权限:

<uses-permission android:name = "android.permission.DISABLE_KEYGUARD"/>
Run Code Online (Sandbox Code Playgroud)

  • 这是一个已弃用的 API,但它在某种程度上可以工作,因此仍然需要一些工作才能获得一致的结果。然而,这似乎是我们能做的最好的事情。 (3认同)