如何在Android中处理主页按钮

时间:2012-06-03 11:12:59

标签: android android-homebutton

我是新的Android开发者, 我知道处理后退按钮,但我不知道如何处理主页按钮, 当我点击主页按钮时, 我尝试了很多方法, 但没用过, 请任何人帮助我解决我的问题。 我使用了以下代码,

 @Override
  public boolean onKeyDown(int keyCode, KeyEvent event) 
  {
    if(keyCode==KeyEvent.KEYCODE_HOME)
    {
        Toast.makeText(this, "Click Home ", Toast.LENGTH_LONG).show();
    }
    return super.onKeyDown(keyCode, event);
   }

5 个答案:

答案 0 :(得分:7)

Does not get Home Button click event。但是当你按下主页按钮时 叫这个方法

  @Override
        protected void onStop() {

            super.onStop();
        }

答案 1 :(得分:0)

您无法判断是否单击了HOME按钮,并且在按下HOME按钮时无法阻止您的应用被隐藏, 但你可以判断你的应用程序是否不再可见(BACK键,HOME键或其他应用程序占据前景)。

只需覆盖onPauseonStop,然后在其中添加日志。

答案 2 :(得分:0)

我找到答案请添加以下代码 -

public boolean isApplicationSentToBackground(final Context context) 
   {
    ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);
    if (!tasks.isEmpty()) {
        ComponentName topActivity = tasks.get(0).topActivity;
        if (!topActivity.getPackageName().equals(context.getPackageName())) {
            return true;
        }
    }
    return false;
}





@Override
public void onStop() {
    if (isApplicationSentToBackground(this)){
        //put your code here what u want to do

    }
    super.onStop();
}

更改清单文件 -

<uses-permission android:name="android.permission.GET_TASKS" />

答案 3 :(得分:0)

enter image description here   框架层处理的Android Home Key无法在应用程序层级别处理。因为主页按钮操作已在以下级别中定义。但是,如果您正在开发自定义ROM,则有可能。由于安全原因,Google限制了HOME BUTTON覆盖功能。

答案 4 :(得分:-1)

您无法再检测到主页新闻事件。 但你可以通过其他方式回家新闻事件逻辑上它对我有用也希望对你有用。

在活动中定义

public static boolean OnPause = false;
public static boolean OnResume = false;

将此方法放入活动

 @Override 
  protected void onPause() 
  { 
      // TODO Auto-generated method stub
      super.onPause(); 

       OnPause  = true;

  }

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();

    OnResume = true;        

}
@Override
protected void onStop() {
    // TODO Auto-generated method stub
    super.onStop();

    if(OnPause == true && OnResume == false)
    {
        Log.e("My activity ", " **** home is press *** ");
        //Do Your Home press code Here.

    }

    OnPause = false;
    OnResume = false;

}