2012-08-07 104 views
0

我試圖阻止HOME鍵按鍵響應時服務運行監聽HOME按鈕按下並重新啓動活動

protected void onPause() { 
    if (isMyServiceRunning()) 
    { 
     Intent Act2Intent = new Intent(PhysicalTheftDialog.this, PhysicalTheftDialog.class);    
     startActivity(Act2Intent); 
    } 
    else { 

    } 
} 

private boolean isMyServiceRunning() { 
    ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 
     if ("nyp.android.project.MyService".equals(service.service.getClassName())) { 
      return true; 
     } 
    } 
    return false; 
} 

但每次當我按下HOME鍵的應用程序崩潰。

+0

你會得到一個錯誤? – 2012-08-07 03:54:48

+0

你可以發佈LOGCAT輸出什麼時候崩潰? – JeffS 2012-08-07 03:55:51

回答

1

看到,出於安全原因,android開發人員本身不允許我們用home按鈕來改變任何類型的行爲。但即使如果你真的想禁用主頁按鈕,你可以通過添加以下代碼來做到這一點:

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

@Override  
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if(keyCode == KeyEvent.KEYCODE_HOME) { 
     Log.i("Home Button","Clicked"); 
    } 

    if(keyCode==KeyEvent.KEYCODE_BACK) { 

     finish(); 
    } 
    return false; 
} 
+1

這不適用於Android 4及以上 – dythe 2012-08-07 04:13:35

+0

@dythe那麼如何解決它在Android 4 +? – blackdog 2015-02-24 05:58:24