【发布时间】:2013-09-30 23:10:05
【问题描述】:
几年前,我编写了一个可在 Android 2 上运行的闹钟应用程序,现在我正在尝试将其升级为可在 Android 4 上运行。特别是在三星 Galaxy S4 上。
在 Android 2 上,如果手机处于睡眠状态,它会唤醒手机并在锁定屏幕上显示“贪睡或关闭”屏幕。
在Android 4上,它会唤醒手机,但你必须解锁它,然后打开通知区域,然后点击闹钟的通知,然后才能点击“关闭”。
我一直使用这段代码来唤醒:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
我已经阅读了关于这个问题的 8 个不同的 stackoverflow 问题。他们中的大多数人都给出了上面的代码,这些代码几年前在 Android 2 中对我有用,但在 Android 4 中不起作用。但他们都没有帮助我解决这个问题。以下是我阅读并尝试过的问题:
Android: remove or disable programmatically the Lock Screen on Samsung Galaxy S2 device
How to display a fullscreen TYPE_SYSTEM_ALERT window?
How do I create an Activity that is visible on top of the lock screen
How to start a dialog (like alarm dimiss /snooze) that can be clicked without unlocking the screen
Android activity over default lock screen
android device locked, yet want alarm to sound and dialog to appear
Android dialog over lock screen
Show dialog with touch events over lockscreen in Android 2.3
是否有人对可能导致此问题的 Android 4 中的更改有任何想法?
编辑:这是我见过的最简单的警报对话框之一,它没有出现“最小化”。它不会像所写的那样出现在锁定屏幕上,但您可以使用 WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED 修复它
它是用 FragmentActivity 和 DialogFragment 编写的,但它仍然可以作为 Activity 工作。它使用 AlertDialog.Builder 来制作对话框,如果您尝试使用 XML 布局进行操作,它将无法正常工作。为什么?
【问题讨论】:
-
你已经在清单中设置了这个权限?? -->
-
是的,该权限一直被设置,并且用于在 Android 2 上工作。
-
我尝试了一些新的东西。我将屏幕锁定设置为无,但我仍然看到问题。以台式计算机为例,就像对话框正在“最小化”启动一样——您必须在对话框出现之前点击警报的通知。当手机打开时,对话框会弹出,但当手机关闭时,对话框会最小化。这在 Android 2.3 中不是问题
-
不是 Android 4。这是 S4 独有的问题。我正在尝试自己追踪它。我们曾经让它工作过,但最近它停止了。
-
radley,我不确定它是否是 S4 独有的,因为当我在 Android 4 模拟器上尝试时,我看到了同样的问题。
标签: android android-activity android-alarms lockscreen android-notification-bar