应用程序未在主页按钮单击时最小化

时间:2013-08-28 12:18:56

标签: android

我想在我的应用中点击用户点击的主页按钮上编写一些代码。

我写了以下代码:

 @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)
            {
               //The Code Want to Perform. 
                Toast.makeText(getApplicationContext(), flag+"In Here", Toast.LENGTH_SHORT).show();

            }
            return true;
        }

此代码为我提供Toast消息,但不会缩小我的应用程序。

删除以下代码后:

  @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)
                {
                   //The Code Want to Perform. 
                    Toast.makeText(getApplicationContext(), flag+"In Here", Toast.LENGTH_SHORT).show();

                }
                return true;
            }

它没有显示我的祝酒消息。

请帮帮我。

我也尝试过:

返回false

暂停方法

但没有奏效。

3 个答案:

答案 0 :(得分:2)

请尝试使用return false,这样您就不会抓住点击事件,而是将其发送到操作系统。

答案 1 :(得分:2)

你应该有这个代码,

 @Override
            public void onAttachedToWindow() {
                super.onAttachedToWindow();
                this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);           
            }
你的代码中的

。删除它不会触发Home键操作。

现在要最小化应用,请执行以下操作,

    @Override
                public boolean onKeyDown(int keyCode, KeyEvent event) {     

                    if(keyCode == KeyEvent.KEYCODE_HOME)
                    {
                       //The Code Want to Perform. 
                        Toast.makeText(getApplicationContext(), flag+"In Here", Toast.LENGTH_SHORT).show();
                 Intent gotoHome= new Intent(Intent.ACTION_MAIN);
                 gotoHome.addCategory(Intent.CATEGORY_HOME);
                 gotoHome.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                 startActivity(gotoHome);
                    }
                    return true;
                }

但我认为此解决方案不再适用于更高的API级别。

答案 2 :(得分:2)

在onKeyDown中返回true表示事件已被处理。

将代码修改为return false,以便操作系统进一步处理该事件。

例如:

        public boolean onKeyDown(int keyCode, KeyEvent event) {     

            if(keyCode == KeyEvent.KEYCODE_HOME)
            {
               //The Code Want to Perform. 
                Toast.makeText(getApplicationContext(), flag+"In Here", Toast.LENGTH_SHORT).show();

            }
            return false; // Signals the KeyEvent.KEYCODE_HOME to be processed further.
        }

请参阅onKeyDown文档