我的应用程序的主窗口设置了FLAG_SHOW_WHEN_LOCKED和FLAG_DISMISS_KEYGUARD窗口标志,以便在通常的Android锁定屏幕前显示应用程序窗口。确切的代码如下
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
自从我的所有设备上的ICS以来,这已经完美地运行了。但最近我收到了最终用户的两份报告,称应用程序不再出现在锁定屏幕之上。我们终于确定第一个用户正在运行Cyanogenmod并让他打开支持问题。但第二个用户正在运行绝对库存的操作系统。为了让事情更加感兴趣,他报告说,当他第一次安装4.4系统更新时,它正常工作。但安装最新的系统更新打破了一些问题。从那以后,如果锁定屏幕,我们的应用程序不再显示在顶部,但是一旦屏幕解锁,它就会立即崩溃。
技术细节......
型号:SM-G900P
Android版本:4.4.2
基带版本:G900PVPU1ANE5
内核版本:3.4.0-1750661
dpi @ SWDD6020#1
5月30日星期五21:23:48 KST 2014年
内部编号:KOT49H.G900PVPU1ANE5
SE for Android status
强制
SEPF_SM-G900P_4.4.2_0016
2014年5月30日星期五21:23:28
安全软件版本
MDF v1.0 Release 3
VPN v1.4 Release 1
我还没有运行4.4的手机。我在最新最好的4.4模拟器上运行应用程序,并且在锁定屏幕上弹出它没有任何问题。
其他人听到过这方面的报道吗?关于我们接下来可以做什么的任何建议?
答案 0 :(得分:1)
我在寻找答案的时候发现了这个问题,为什么我创建的通知没有出现在锁屏前面。该代码适用于旧的2.3 Android设备,但它不适用于新的4.4.4 nexus 5.
在我的情况下,它是由:
引起的<item name="android:windowIsFloating">true</item>
当我将其更改为false时,它已被修复。不知道为什么有这个要求,如果4.3和更低版本不需要这个(我只有旧的2.3设备和4.4.4 nexus 5来测试东西)。
- 编辑 也看到这个问题,似乎还有另一种解决方法 Android's floating windows coupled with FLAG_SHOW_WHEN_LOCKED fails
答案 1 :(得分:0)
Haven对此进行了一段时间的检查。围绕这个问题,我们最终得出结论,Android系统正在做它应该做的一切。真正的问题是4.4更改禁止我们阻止传入的SMS消息进入默认消息应用程序的能力。我们的应用程序收到了传入的短信,并按照预期弹出锁定屏幕顶部。但随后默认消息应用程序会收到消息并弹出我们的应用程序窗口。由于我们的应用程序不再可见,因此锁定屏幕已正确恢复。