5

在我的 java 应用程序中,我有这个代码

@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);

所以我不明白为什么会发生这种情况以及这段代码是什么意思?

编辑: 这里有一些参考

当我在手机上运行应用程序时。版本是 android 4.0.3

Android上的幼儿安全应用程序

4

3 回答 3

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

用于禁用android中的主页按钮,

安全漏洞已在较新版本的 Android 中得到修复,因此它在 ICS 和果冻豆中不起作用......!!

于 2012-10-15T07:07:43.927 回答
4

我已经解决了这个问题

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

在调用 super.onCreate 之前。

 protected void onCreate(Bundle savedInstanceState) {

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

        super.onCreate(savedInstanceState);
}

Saludos desde 麦德林

于 2013-11-14T18:26:01.030 回答
2
@Override    
public void onWindowFocusChanged(boolean hasFocus) {
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);    
    super.onWindowFocusChanged(hasFocus);
}

我对 windowAttached 也有一些问题,请尝试改用 windowFocusChanged。

于 2012-09-24T07:02:56.743 回答