WedX - журнал о программировании и компьютерных науках

Как отключить кнопку «Домой» и кнопку «Назад»?

Я хочу отключить кнопку «Домой» и кнопку «Назад», когда в моем приложении установлен флажок. У меня версия 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;
    }
}

Как я могу заставить это работать? Я не хочу прятать кнопки, я только хочу, чтобы они не реагировали на нажатия при установленной галочке.


  • Вы не можете переопределить кнопку «Домой», это все равно, что сказать, что вы не можете выйти из приложения на рабочем столе (если вы не выключите его) при запуске приложения. 31.10.2013
  • Звучит как вредоносное ПО..!!! 31.10.2013
  • потому что 5 секунд использования Google дали бы вам информацию о том, что вы вообще не можете отключить кнопку «Домой». 31.10.2013
  • лол, это не я спрашивал, на самом деле я дал ответ :) но я согласен, что гугление занимает меньше времени, чем публикация в SO, но SO предоставляет более короткие ответы и ссылки 31.10.2013
  • Я не хочу скрывать кликабельность только тогда, когда при нажатии на кнопку «Домой» ничего не работает. 31.10.2013

Ответы:


1

Вы можете переопределить клавишу «Назад» onBackPressed() и позволить ей ничего не делать, но вы не можете переопределить кнопку «Домой», но вы можете добавить некоторый код к onStop(), который вызывается при нажатии клавиши «Домой».

вот кусок кода для управления бэкпрессом

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

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 не предусмотрено управление кнопкой «Домой».

31.10.2013

3

вы не можете отключить кнопку «Домой» в своем приложении, но вы можете отключить кнопку «Назад» с переопределением onBackPressed() и ничего не делать в этом

31.10.2013
  • Я не хочу скрывать кликабельность, но только при нажатии на кнопку «Домой» ничего не работает. 31.10.2013
  • вы не можете, потому что это системная кнопка, и вы не можете ее переопределить 31.10.2013

  • 4

    Вы не можете отключить кнопку домой.

    Невозможно перехватить кнопку «Домой» на 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);
    }
    
    31.10.2013
  • Я не хочу скрывать кликабельность, но при нажатии на кнопку «Домой» ничего не работает. 31.10.2013
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]