【问题标题】:How can I disable click event on Home key in android?如何在android中禁用Home键上的点击事件?
【发布时间】:2017-01-20 12:03:36
【问题描述】:

我正在使用以下方法禁用 HomeKey 点击事件,但点击 Home 键后我的应用程序将被关闭。我想,每当用户单击主页键时,我的应用程序都不会关闭。

@Override
protected void onUserLeaveHint() {
    super.onUserLeaveHint();
    moveTaskToBack(false);
}

【问题讨论】:

标签: android click android-homebutton


【解决方案1】:

自 Android 4 以来,没有有效的方法来停用家庭 按钮。这就是我们需要另一个小技巧的原因。一般来说 这个想法是检测新应用程序何时在前台,并且 立即重新开始您的活动。

检查此解决方法:http://www.andreas-schrade.de/2015/02/16/android-tutorial-how-to-create-a-kiosk-mode-in-android/

【讨论】:

    【解决方案2】:

    在您的 Activity 中覆盖以下方法,

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

    现在像这样处理关键事件,

    @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;
    }
    

    【讨论】:

    • "TYPE_KEYGUARD" 显示错误..但我使用的是 TYPE_KEYGUARD_DIALOG 类型...会出现此错误 --- java.lang.IllegalArgumentException: Window type can not be changed after the添加窗口.--
    【解决方案3】:

    将他放入您的活动代码中。它会拦截返回按钮点击

      @Override
    public void onBackPressed() {
    
    }
    

    【讨论】:

      【解决方案4】:

      你可以像这样覆盖主页按钮:

      @Override
      public boolean onKeyDown(int keyCode, KeyEvent event) {
          if ((keyCode == KeyEvent.KEYCODE_HOME)) {
              Toast.makeText(this, "You pressed the home button!", Toast.LENGTH_LONG).show();                     
              return true;
          }
          return super.onKeyDown(keyCode, event);
      }
      

      【讨论】:

        猜你喜欢
        • 2016-02-19
        • 2013-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多