问题
In my java application i have this code
@Override
public void onAttachedToWindow()
{
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
super.onAttachedToWindow();
}
when i build it for android 2.3 (level 10) it compiles and works fine. But when i build it for android 4.0 (level 15) it compiles and gives me crash at run time and following error
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.
when i comment this line and build it works fine and no issue..
//this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
so i am not getting why this happning and whats this code means?
Edit : some reference are here
when I run app on my phone.The version is android 4.0.3
toddler safe app on android
回答1:
@Override
public void onAttachedToWindow()
{
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
super.onAttachedToWindow();
}
is used to disable home button in android but
this security flaw has been fixed in newer versions of Android so it will not work in ICS and jelly bean...!!
回答2:
I've solved this issue putting
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
in onCreate before calling super.
protected void onCreate(Bundle savedInstanceState) {
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
super.onCreate(savedInstanceState);
}
Saludos desde Medellín
回答3:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
super.onWindowFocusChanged(hasFocus);
}
I had some problems with windowAttached as well, try using windowFocusChanged instead.
来源:https://stackoverflow.com/questions/12560180/what-does-this-4-line-java-code-means-in-android-application