2012-09-24 21 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麥德林

相關問題