2

我是一个新的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);
   }
4

5 回答 5

8

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

  @Override
        protected void onStop() {

            super.onStop();
        }
于 2012-06-03T11:24:24.897 回答
0

您无法判断是否单击了 HOME 按钮,并且您无法在按下 HOME 按钮时阻止您的应用程序被隐藏,但您可以判断您的应用程序是否不再可见(返回键、HOME 键或其他应用程序获得了前台)。

只需覆盖onPauseor onStop,并在那里添加一个日志。

于 2012-06-03T11:23:03.240 回答
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" />
于 2017-06-21T10:58:55.410 回答
0

在此处输入图像描述 Android Home Key 由框架层处理,您无法在应用层级别处理。因为主页按钮动作已经在下面的级别中定义了。但是如果您正在开发您的自定义 ROM,那么它可能是可能的。出于安全原因,Google 限制了 HOME BUTTON 覆盖功能。

于 2019-09-27T05:31:05.587 回答
-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;

}
于 2012-10-23T13:36:25.590 回答