2015-04-14 59 views
0

我正在尝试自定义锁定屏幕。所以,我不需要让用户按Home键。一开始我写窗口添加后无法更改窗口类型

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
setContentView(R.layout.lock_screen); 

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 
        |WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 

然后我重写的onkeydown

@Override 
public boolean onKeyDown(int keyCode, android.view.KeyEvent event) { 

if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)||(keyCode == KeyEvent.KEYCODE_POWER)||(keyCode == KeyEvent.KEYCODE_VOLUME_UP)||(keyCode == KeyEvent.KEYCODE_CAMERA)) { 
    //this is where I can do my stuff 
    return true; //because I handled the event 
} 
if((keyCode == KeyEvent.KEYCODE_HOME)){ 

    return true; 
} 

return false; 

} 

这里我重写onAttacheToWindow

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

但它给我的错误抛出:IllegalArgumentException:视窗类型不能在窗口之后改变被添加。我的错误在哪里?

我该如何处理主页按钮?

回答

0

没有“好”的方法来处理主页按钮“无所事事”。你真的只有两个选择,可能会或可能不足够你的:

  1. 创建你自己的家庭发射器。用户必须选择您的应用作为其主页启动器。
  2. 您也可以创建一个Service,您可以在窗口中添加视图,并将其粘贴到其他任何位置。在服务中显示“webview:Android: Using WebView outside an Activity context”,查看我之前的回答。您需要修改params以填充屏幕,并修复WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE以使用正确的标记以允许点击。这实际上并不会阻止主页按钮,但它基本上禁用了它的功能。最后,这可能不适用于Android 5.0+,因为状态栏的下拉菜单可能会覆盖您的窗口。
相关问题