【问题标题】:Android's floating windows coupled with FLAG_SHOW_WHEN_LOCKED failsAndroid 的浮动窗口加上 FLAG_SHOW_WHEN_LOCKED 失败
【发布时间】:2012-11-16 05:25:42
【问题描述】:

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

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

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);

工作正常。

但是,我想我会改用一个看起来像对话框的 Activity。但是,所有 Dialog 主题(Holo 等)都有这个项目:

<item name="android:windowIsFloating">true</item>

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

为什么会这样,有办法解决吗?

【问题讨论】:

  • 遇到同样的问题...你能找到解决办法吗?
  • 我最终坚持了一个活动,该活动启动了一个不可取消的对话框,并且完全让我的应用程序禁用了键盘保护。
  • 遇到同样的问题,我想让“透明”活动在锁定屏幕上可见,但似乎不可能
  • @ShirishHerwade 我几乎可以肯定这是因为键盘保护是一个安全组件,只允许系统应用程序覆盖它。
  • @A--C 我认为即使是除 Keyguard 之外的系统应用程序也无法在锁定屏幕上绘制任何内容,因为我的是系统应用程序,仍然无法在锁定屏幕上显示文本。知道的请帮忙。

标签: android user-interface styles


【解决方案1】:

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

KeyguardManager  myKeyGuard = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
myLock = myKeyGuard.newKeyguardLock("tagName");
myLock.disableKeyguard(); 

别忘了在 manifest 中使用 keyguard 权限:

<uses-permission android:name = "android.permission.DISABLE_KEYGUARD"/>

【讨论】:

  • 这是一个已被弃用的 API,但它有些工作,所以它仍然需要一些工作才能获得一致的结果。然而,这似乎是我们能做的最好的了。
  • 非常有帮助的答案。这被弃用真是太可惜了,因为有一种“更好”的方式可以做你想做的事,只有“更好”的方式在“更糟糕”的方式的所有情况下都不起作用。
  • 有没有人找到更好的解决方案来使用?此解决方案确实解锁了屏幕,我想保持屏幕锁定并显示类似whatsapp消息的对话框。似乎这是可能的,因为whatsapp确实有这个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多