【问题标题】:How do I disable the Home button & Back button?如何禁用主页按钮和返回按钮?
【发布时间】:2013-10-31 09:39:32
【问题描述】:

我想在我的应用程序中选中复选框时禁用主页按钮和返回按钮。我使用的是 4.2.2 版。这是我的代码,它不起作用,应用程序在选中框时停止:

public void HardButtonOnClick(View v)
{
    boolean checked1 = ((CheckBox) v).isChecked();
    if(checked1)
    {   
        SQLiteDatabase db;                      
        db = openOrCreateDatabase("Saftey.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
        db.setVersion(1);
        db.setLocale(Locale.getDefault());
        db.setLockingEnabled(true);
        ContentValues values = new ContentValues();
        values.put("hardBtn", "YES");
        db.update("Setting", values, "id = ?", new String[] { "1" });
        Toast.makeText(this, "Hard Button Locked", Toast.LENGTH_LONG).show();
        //SharedPreferences pref = getSharedPreferences("pref",0);
        //SharedPreferences.Editor edit = pref.edit();
        //edit.putString("hard","yes");
        //edit.commit();
        /* String Lock="yes" ;
         Bundle bundle = new Bundle();
         bundle.putString("key", Lock);
         Intent a = new Intent(Change_setting.this, ChildMode.class);
         a.putExtras(bundle);
         startActivity(a);*/
        super.onAttachedToWindow();
        this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
        isLock = true;
    }
    else
    {
        SQLiteDatabase db;                      
        db = openOrCreateDatabase("Saftey.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
        db.setVersion(1);
        db.setLocale(Locale.getDefault());
        db.setLockingEnabled(true);
        ContentValues values = new ContentValues();
        values.put("hardBtn", "NO");
        db.update("Setting", values, "id = ?", new String[] { "1" });
        //SharedPreferences pref = getSharedPreferences("pref",0);
        //SharedPreferences.Editor edit = pref.edit();
        //edit.putString("hard","no");
        //edit.commit();
        Toast.makeText(this, "Hard Button Un-Locked", Toast.LENGTH_LONG).show();
        isLock = false;
    }
}

我怎样才能做到这一点?我不想隐藏按钮,我只希望它们在选中复选框时不响应点击。

【问题讨论】:

  • 您无法覆盖主页按钮,这就像您在启动应用程序时无法退出桌面上的应用程序(除非您将其关闭)。
  • 听起来像是恶意软件..!!!
  • 因为使用谷歌 5 秒会得到你根本无法禁用主页按钮的信息。
  • 大声笑,不是我问的,事实上我提供了一个答案:) 但我同意谷歌搜索比发布到 SO 花费的时间更少,但 SO 提供了更好的缩短答案和链接
  • 我不想只在点击主页按钮不起作用时隐藏可点击

标签: java android eclipse android-4.2-jelly-bean


【解决方案1】:

您可以覆盖返回键 onBackPressed() 并让它不执行任何操作,但您不能覆盖主页按钮,但您可以向 onStop() 添加一些代码,该代码在主页键按下时调用。

这里有一段代码来控制反压

@Override
public void onBackPressed()
{
    if ( checked1 ) // if checked do nothing , remeber tomove checked1 to be a class member
        return;
    super.onBackPressed();
}

【讨论】:

    【解决方案2】:
    @Override
    public void onBackPressed() {
    }
    

    这样你就可以覆盖后退按钮。什么都不做。

    当你按下返回键时,如果你做了一些特别的事情,你可以使用它:

     @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
        int vfBackId = viewFlipper.getDisplayedChild();
    
        if ((keyCode == KeyEvent.KEYCODE_BACK)) {
    
        // Do some stuff    
    
        }
        return false;
    }
    

    但是您不能覆盖主页按钮。 Android 系统没有提供它来处理主页按钮。

    【讨论】:

      【解决方案3】:

      您不能在应用程序中禁用主页按钮,但您可以通过覆盖禁用返回按钮 onBackPressed() 并且什么都不做

      【讨论】:

      • 我不想隐藏可点击但只有当点击主页按钮不起作用时
      • 你不能,因为它的系统按钮,你不能覆盖它
      【解决方案4】:

      您不能禁用主页按钮。

      没有办法拦截 Android 上的主页按钮,除非您将应用设置为主屏幕。这是出于安全原因,因此恶意应用无法通过覆盖所有可以退出的按钮来接管您的设备。

      主页按钮是导航到主屏幕的一种快捷方式。

      如果要处理 HOME 按钮,请实现主屏幕。

      Not able disable Home button on specific android devices

      //返回键事件检测

      @Override
      public boolean onKeyDown(int keyCode, KeyEvent event)
      {
          // Quit if back is pressed     
          if (keyCode == KeyEvent.KEYCODE_BACK)
          {
              moveTaskToBack(true);
              return true;
          }
          return super.onKeyDown(keyCode, event);
      }
      

      【讨论】:

      • 我不想隐藏可点击,但是当点击主页按钮不起作用时
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多