2015-04-14 55 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+,因爲狀態欄的下拉菜單可能會覆蓋您的窗口。
相關問題