-1

我想在我的应用程序中选中复选框时禁用主页按钮和返回按钮。我使用的是 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

4 回答 4

3

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

这是一段控制反压的代码

@Override
public void onBackPressed()
{
    if ( checked1 ) // if checked do nothing , remeber tomove checked1 to be a class member
        return;
    super.onBackPressed();
}
于 2013-10-31T09:42:00.507 回答
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 系统没有提供它来处理主页按钮。

于 2013-10-31T09:44:20.697 回答
1

您不能在应用程序中禁用主页按钮,但您可以使用覆盖 onBackPressed() 禁用后退按钮,并且什么也不做

于 2013-10-31T09:44:23.150 回答
1

您不能禁用主页按钮。

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

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

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

无法禁用特定 Android 设备上的主页按钮

//返回键事件检测

@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);
}
于 2013-10-31T09:45:39.367 回答