how*_*rad 14 android lockscreen android-alarms android-notification-bar android-activity
几年前,我写了一个适用于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);
Run Code Online (Sandbox Code Playgroud)
关于此事,我已经阅读了8个不同的stackoverflow问题.他们中的大多数都给出了上面的代码,这在几年前在Android 2中起作用,但在Android 4中不起作用.但是他们都没有帮助我解决这个问题.以下是我阅读和尝试过的问题:
Android:以编程方式删除或禁用Samsung Galaxy S2设备上的锁定屏幕
有没有人对Android 4中可能导致此问题的变化有任何想法?
编辑:这是我见过的一个最简单的例子,它没有出现"最小化"的警报对话框.它没有像写的那样出现在锁屏上,但是你可以用它来修复它WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
它是用FragmentActivity和DialogFragment编写的,但它仍然可以作为Activity使用.它使用AlertDialog.Builder来创建对话框,如果您尝试使用XML布局,它将无法工作.为什么?
how*_*rad 17
我明白了,答案与我的预期完全不同.
这段代码包含在Android 2的闹钟示例中,在AlarmAlert.java活动中:
@Override
protected void onStop() {
super.onStop();
// Don't hang around.
finish();
}
Run Code Online (Sandbox Code Playgroud)
作为参考,您可以在此处看到Git过去的示例代码中的文件,其中包含上述onStop函数.它从未在Android 2中引起过问题.
但是在Android 4中,如果手机关闭,这onStop会在手机醒来之前触发,有效地"最小化"活动.一旦我删除了这个功能,它立即再次工作.
但我想知道,这是其他人喜欢@radley和@Guardanis的问题吗?这似乎不太可能,但如果这也解决了你的问题,请告诉我.
如果您将来访问此答案,并且您遇到此问题,我会尝试的是:
取出任何onStop功能.
将此代码添加到Activity:
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);
Run Code Online (Sandbox Code Playgroud)确保您使用的是全屏主题,而不是对话框主题.
这对我没什么影响,但您可以尝试在清单中显式设置showOnLockScreen: <activity android:name="com.example.MyActivity" android:showOnLockScreen="true"/>
第二件事对我没什么影响,但你可能会尝试添加旗帜 WindowManager.LayoutParams.FLAG_FULLSCREEN
我希望这有助于其他人!
| 归档时间: |
|
| 查看次数: |
11425 次 |
| 最近记录: |