监听HOME按钮按下并重新启动活动

问题描述:

我试图阻止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

看到,出于安全原因,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