android手机系统锁屏起来了,其他的提示框不会弹出来

lognic10 2011-12-20 12:50:46
android手机系统锁屏出现了,其他的提示框几不会弹出来,这是怎么做到的?
举例:我有一个短信应用,在收到短信时会弹出一个提示框出来提示给用户,但是如果这时手机系统的锁屏界面起来了,我弹出的提示框就不显示了,要等解开系统锁屏才会看到该弹出的提示框。

请问一下大牛们:系统是怎么将自己的锁屏界面置于界面的最顶端而不受其他的提示框盖上来的???
...全文
492 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fiven_Luo 2011-12-20
  • 打赏
  • 举报
回复
就算你做一个闹钟,其他闹钟响的时候一样会覆盖的。
看一下WindowManagerService,Window有一个叠加顺序的,系统Dialog是优先级最高的。
wensefu 2011-12-20
  • 打赏
  • 举报
回复
去看看闹钟的代码也许可以解决,不过应该需要一些权限
lognic10 2011-12-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fiven_luo 的回复:]
你不能把窗口覆盖在LockScreen上面,只能重写KeyguardView.
[/Quote]
这位同学可能误解我的本意了。
我现在是想把我自己的Activity一直的置于屏幕的最顶端,防止其他的程序盖在我的这个Activit上,如:有些短信软件,接收到短信时会弹出对话框,我现在就是不想它的这个对话框弹出来。
Fiven_Luo 2011-12-20
  • 打赏
  • 举报
回复
你不能把窗口覆盖在LockScreen上面,只能重写KeyguardView.
lognic10 2011-12-20
  • 打赏
  • 举报
回复
补充说明一下吧:
在KeyguardViewManager.show()函数里的代码如下:

final int stretch = ViewGroup.LayoutParams.MATCH_PARENT;
int flags = WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN
| WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER
| WindowManager.LayoutParams.FLAG_KEEP_SURFACE_WHILE_ANIMATING
/*| WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
| WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR*/ ;
if (!mNeedsInput) {
flags |= WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
}
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
stretch, stretch, WindowManager.LayoutParams.TYPE_KEYGUARD,
flags, PixelFormat.TRANSLUCENT);
lp.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN;
lp.windowAnimations = com.android.internal.R.style.Animation_LockScreen;
lp.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_NOSENSOR;
lp.setTitle("Keyguard");
mWindowLayoutParams = lp;

其中的设置的WindowManager.LayoutParams 属性,我照搬过来用,可以没效果,而且整个Activity捕捉不到TouchEvent。
是否我搞错什么地方了?
Fiven_Luo 2011-12-20
  • 打赏
  • 举报
回复
它是由PhoneWindowManager直接显示的,不许要置顶啊。其他Dialog或View也是一个PhoneWindow。
lognic10 2011-12-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fiven_luo 的回复:]
ScreenLock是PhoneWindowManager创建的一个最顶层的View,其他View无法在上面显示。这是Android的Framework决定的。
[/Quote]
你说的是LockScreen吧?
LockScreen.java我已经看过源码,但是在里面没看到其他将该view置于最顶层的代码,是否存在于其他什么地方?
Fiven_Luo 2011-12-20
  • 打赏
  • 举报
回复
ScreenLock是PhoneWindowManager创建的一个最顶层的View,其他View无法在上面显示。这是Android的Framework决定的。
lognic10 2011-12-20
  • 打赏
  • 举报
回复
没人知道么???跪求高手!!

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧