android FLAG_SHOW_WHEN_LOCKED无效

时间:2012-12-01 18:27:01

标签: android

我试图让我的应用程序通过锁定屏幕获取用户的一些输入,但无法使用 这样做。

我在onCreate以及onAttachToWindow回调中尝试了以下几行但似乎没什么问题

Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);

我已经检查了stackoverflow上的大多数问题,他们都指出了上面提到的解决方案。

我们是否需要使用任何权限,否则我会遗漏任何内容。 我正在研究一个扎根的星系S

5 个答案:

答案 0 :(得分:2)

请注意,您的活动不应该是对话框。 我在Manifest中定义了:

<activity
    android:name="TestDialog"
    android:theme="@android:style/Theme.Dialog" >
</activity>

删除主题后,它起作用,活动显示在任何锁定屏幕上。 也许您可以借助样式@android:style/Theme.Translucent模拟对话框。

答案 1 :(得分:0)

下面提到的答案也不起作用......现在唯一的选择就是在清单中添加禁用keygaurd的权限并使用

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

我不想添加新权限,因为这会使我的应用程序进入手动更新而不是自动更新。 :(

答案 2 :(得分:0)

这个问题的答案是

Android's floating windows coupled with FLAG_SHOW_WHEN_LOCKED fails

无法使用浮动窗口和FLAG_SHOW_WHEN_LOCKED

答案 3 :(得分:0)

我遇到了同样的问题,我可以确认问题是对话框主题。似乎属性 android:windowIsFloating 负责锁定屏幕顶部没有显示对话框。该属性在Holo对话框主题中设置为true

但是如果你将你的Holo对话框主题推导出一个像这样的自己的风格:

<style name="ReminderAlarmDialog" parent="@android:style/Theme.Holo.Dialog">
    <item name="android:windowIsFloating">false</item>
</style>

对话框活动将显示在锁定屏幕的顶部。 唯一的问题:对话框将填满整个屏幕,因此,它看起来不是很好。所以它不是一个真正的解决方案,只是解释为什么对话主题不起作用。

答案 4 :(得分:0)

我遇到同样的问题,解决方法是移除您活动中的setType行。 (如果你已经添加了那个)

@Override
public void onAttachedToWindow() {
    super.onAttachedToWindow();
    //getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}