如何禁用“主页”按钮&返回键?

时间:2013-10-31 09:39:33

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

我想要禁用Home Button&在我的应用程序中选中复选框时返回按钮。我的版本是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;
    }
}

我该如何使这项工作?我不想隐藏按钮,我只希望他们在选中复选框时不响应点击。

4 个答案:

答案 0 :(得分:3)

您可以覆盖后退键onBackPressed()并让它不执行任何操作,但您无法覆盖主页按钮,但可以向onStop()添加一些代码,这些代码在主页按键时调用。< / p>

这是一段控制背压的代码

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

答案 1 :(得分:1)

@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系统不提供处理主页按钮的功能。

答案 2 :(得分:1)

您无法在应用程序中禁用主页按钮,但您可以通过覆盖禁用后退按钮 onBackPressed()并且不执行任何操作

答案 3 :(得分:1)

您无法禁用主页按钮。

除非您将应用设置为主屏幕,否则无法拦截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);
}