2012-09-24 22 views
5

在我的Java应用程序中我有这样的代码这4行java代码在android应用程序中意味着什么?

@Override 
public void onAttachedToWindow() 
    { 
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); 
    super.onAttachedToWindow(); 
    } 

当我建立它的Android 2.3(10级)它编译和工作正常。但是,当我建立它的Android 4.0(15级)它编译,并给了我在运行时崩溃和下面的错误

07-16 14:00:03.090: E/AndroidRuntime(29487): FATAL EXCEPTION: main 
07-16 14:00:03.090: E/AndroidRuntime(29487): java.lang.IllegalArgumentException: Window type can not be changed after the window is added. 

当我评论这条线,并建立它工作正常,没有问题..

//this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); 

所以我不明白为什么这个happning和这个代码是什么意思?

编辑: 一些参考在这里

when I run app on my phone.The version is android 4.0.3

toddler safe app on android

+0

它只是当你的活动涉及到前台像onDisplay黑莓 –

+0

只需设置targetSDK到小于14表示。然后它将工作http://stackoverflow.com/a/32587231/3496570 – Nepster

回答

9
@Override 
public void onAttachedToWindow() 
    { 
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); 
    super.onAttachedToWindow(); 
    } 

用于禁用home键在android系统

安全漏洞已被固定在Android的的新版本,所以它不会在ICS和果冻豆工作...!

2
@Override  
public void onWindowFocusChanged(boolean hasFocus) { 
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);  
    super.onWindowFocusChanged(hasFocus); 
} 

我遇到了一些问题,windowAttached还有,请尝试使用windowFocusChanged代替。

+7

它不起作用。使用android 4.1在galaxy s3上进行测试 –

4

我已经解决了这个问题,把

this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); 
中的onCreate

调用超之前。

protected void onCreate(Bundle savedInstanceState) { 

     this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); 

     super.onCreate(savedInstanceState); 
} 

Saludos desde麦德林

相关问题