几年前,我编写了一个可在 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 4 中的更改有任何想法?
编辑:这是我见过的警报对话框中最简单的示例之一,它没有出现“最小化”。如所写,它不会出现在锁定屏幕上,但您可以使用以下方法修复它WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
它是用 FragmentActivity 和 DialogFragment 编写的,但它仍然可以作为 Activity 工作。它使用 AlertDialog.Builder 来制作对话框,如果您尝试使用 XML 布局进行操作,它将无法正常工作。为什么?