【问题标题】:Restrict Homescreen launch when user clicks on Home button of android phone当用户点击安卓手机的主页按钮时限制主屏幕启动
【发布时间】:2011-10-24 05:54:09
【问题描述】:

我有我的自定义应用程序在手机上运行,​​它应该 24/7 运行,所以当用户点击手机的主页按钮时,有一个要求限制启动 android 手机的主屏幕意味着如果我的应用程序运行在电话和用户单击主页按钮 它不应导航到电话的主屏幕。 它应该始终在手机上显示我的自定义应用程序。

那么谁能帮我实现这个功能?请分享一些示例代码,以便我实施。

问候, 皮克斯

【问题讨论】:

标签: android


【解决方案1】:

我们无法覆盖主页按钮功能。主页按钮是为操作系统保留的

【讨论】:

    【解决方案2】:

    如果您真的想这样做,您可以制作一个自定义启动器(主屏幕)。 here 概述了一些入门提示,但这不是一个简短的调整。

    这还需要您的用户将他们的启动器设置为您的自定义启动器,然后将其设为默认启动器等。这只有在您对设备有 100% 的配置控制权时才真正合理。

    但是,如果您确实走这条路,那么您将能够处理每一个家庭被压的情况,并有一个简单的钩子来启动您的 24/7 应用程序。

    【讨论】:

      【解决方案3】:

      试试这个:

      @Override
      public void onAttachedToWindow() {
          // TODO Auto-generated method stub
          this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);     
          super.onAttachedToWindow();
      }
      @Override
      public boolean dispatchKeyEvent(KeyEvent event) {
          if (event.getAction() == KeyEvent.ACTION_DOWN) {
              switch (event.getKeyCode()) {
              case KeyEvent.KEYCODE_BACK:
                  return true;
              case KeyEvent.KEYCODE_HOME:
                  return true;
              }
          } else if (event.getAction() == KeyEvent.ACTION_UP) {
              switch (event.getKeyCode()) {
              case KeyEvent.KEYCODE_BACK:
                  if (!event.isCanceled()) {
                      // Do BACK behavior.
                  }
                  return true;
              case KeyEvent.KEYCODE_HOME:
                  if (!event.isCanceled()) {
                      // Do HOME behavior.
                  }
                  return true;
              default:
                  return true;
      
      
              }
          }
      
          return super.dispatchKeyEvent(event);
      }
      

      【讨论】:

      • 看起来很不错,但不包括一些奇怪的情况,比如按住电源按钮打开关机弹出窗口然后点击主页。您也可以覆盖电源按钮,但每次您想关闭设备时都必须拔下电池。
      【解决方案4】:

      如果您想锁定主页按钮。您可以在以下代码的帮助下做到这一点。但它仅适用于单个活动。

      @Override

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

      【讨论】:

        猜你喜欢
        • 2011-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-27
        • 1970-01-01
        相关资源
        最近更新 更多