1

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

我在 onCreate 和 onAttachToWindow 回调中尝试了以下几行,但似乎没有任何效果

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

我检查了有关 stackoverflow 的大多数问题,它们都指向上述解决方案。

我们需要使用任何许可还是我遗漏了什么。我正在研究一个根深蒂固的星系 S

4

5 回答 5

2

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

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

在我删除主题后,它可以工作并且活动显示在任何锁定屏幕上。也许你可以在 style 的帮助下模拟一个对话框@android:style/Theme.Translucent

于 2013-01-06T11:29:01.003 回答
0

这个问题的答案是

Android 的浮动窗口加上 FLAG_SHOW_WHEN_LOCKED 失败

不能与 FLAG_SHOW_WHEN_LOCKED 一起使用浮动窗口

于 2012-12-02T06:34:10.667 回答
0

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

@Override
public void onAttachedToWindow() {
    super.onAttachedToWindow();
    //getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}
于 2015-03-13T09:43:26.800 回答
0

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

但是,如果您将 Holo 对话框主题派生为自己的样式,如下所示:

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

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

于 2014-11-12T19:26:10.593 回答
0

下面建议的答案也不起作用......现在留给我的唯一选择是在清单中添加禁用 keygaurd 的权限并使用

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

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

于 2012-12-02T05:46:13.987 回答