我试图让我的应用程序通过锁定屏幕获取用户的一些输入,但无法使用 这样做。
我在onCreate以及onAttachToWindow回调中尝试了以下几行但似乎没什么问题
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
我已经检查了stackoverflow上的大多数问题,他们都指出了上面提到的解决方案。
我们是否需要使用任何权限,否则我会遗漏任何内容。 我正在研究一个扎根的星系S
答案 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);
}