Переопределить домашнюю и обратную кнопку – это случай, когда логическое значение true

Мне было интересно, могу ли я переопределить действие задней и домашней кнопки в некоторых случаях. Обычно эти кнопки должны просто реагировать так, как они всегда, но в случае, когда какая-то настройка верна, я хочу переопределить кнопки и позволить им вызывать мои собственные методы.

Я использую эти два метода для переопределения этих кнопок:

@Override public void onBackPressed() { // call my backbutton pressed method when boolean==true } @Override public void onAttachedToWindow() { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); // call my homebutton pressed method when boolean==true } 

Мне было интересно, могу ли я переопределить действие задней и домашней кнопки в некоторых случаях.

Да, вы можете сделать переопределение кнопки « Home .

Я разработал приложение, которое отключает жесткую кнопку, вы можете посмотреть. Я взял кнопку переключения, которая блокирует все жесткие кнопки для работы, кроме кнопки питания

 public class DisableHardButton extends Activity { /** Called when the activity is first created. */ TextView mTextView; ToggleButton mToggleButton; boolean isLock=false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mTextView=(TextView) findViewById(R.id.tvInfo); mToggleButton=(ToggleButton) findViewById(R.id.btnLock); mToggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub isLock=isChecked; onAttachedToWindow(); } }); } @Override public boolean dispatchKeyEvent(KeyEvent event) { if ( (event.getKeyCode() == KeyEvent.KEYCODE_HOME) && isLock) { mTextView.setText("KEYCODE_HOME"); return true; } else return super.dispatchKeyEvent(event); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if( (keyCode==KeyEvent.KEYCODE_BACK) && isLock) { mTextView.setText("KEYCODE_BACK"); return true; } else return super.onKeyDown(keyCode, event); } @Override public void onAttachedToWindow() { System.out.println("Onactivity attached :"+isLock); if(isLock) { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); } else { this.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION); super.onAttachedToWindow(); } } } 

main.xml

      

Вы вызываете super.onBackPressed (), чтобы вызвать обычный метод. Пример:

 @Override public void onBackPressed() { if (activated) { //doyourthing } else { super.onBackPressed() } } 

Нет, ты не можешь. То, что вы можете сделать, это ovveride метод и управлять булевым внутри него:

например:

  public void onBackPressed() { // call my backbutton pressed method when boolean==true if (myCondition) { // take care of my needs } else // call super to let the back behavior be "normal" } 

Что касается переопределения поведения Home Button, вам не повезло .

Однако, если ваше приложение является конкретным и имеет ограниченную целевую аудиторию, например, приложение для межорганизаций, больничный киоск, заказ ресторана, вы можете попробовать сделать свое приложение в качестве Домашнего (приложение для запуска). Вы можете найти хороший пример здесь: Как написать приложение для пользовательских Launcher в Android

И чтобы переопределить события задней клавиши, есть много примеров.

Например:

  1. Catch keypress с Android
  2. Кнопка «Отменить назад», чтобы действовать как кнопка «домой»
  3. Android – Как переопределить кнопку «Назад», чтобы она не закончила () мою активность?

введите переменную-член переменной типа boolean

 boolean temp; @Override public void onBackPressed() { // call my backbutton pressed method when boolean==true if(temp) //your methode else finish(); } 

Я использую это:

 public void onBackPressed() { switch (screen) { case 1: screen = 99; setContentView(R.layout.menu); break; case 99: finish(); break; } return; } 

Когда я нахожусь на другом экране (другой экран меню), я устанавливаю экран переменной 1. Когда я нажимаю кнопку «Назад», он возвращается к экрану меню (вместо того, чтобы убивать приложение). и дать экранной переменной число 99, а затем, когда вы снова нажмете кнопку «Назад», она убивает приложение.

Однако вы не можете изменить кнопку «домой».

  • Изменение цвета кнопки, когда мышь закончилась
  • Как отключить / включить диалоговые отрицательные положительные кнопки?
  • Как добавить пользовательское состояние кнопки
  • В Android, как я устанавливаю поля в dp программно?
  • Как вы нажимаете кнопку в элементе управления веб-браузером?
  • Interesting Posts

    Почему размер пустого classа в C ++ не равен нулю?

    UIScrollView – показывает полосу прокрутки

    Удаленный рабочий стол: полноэкранный режим ограничен разрешением моего основного монитора. Как я могу получить полноэкранный сеанс rdp на моем втором (большем) экране?

    Доступен ли Instant Viewer только для мышей Microsoft?

    Как передать значение аргумента по умолчанию для члена экземпляра методу?

    Как включить JSONP для существующей службы WCF?

    Существует ли какая-либо «стандартная» хтоноподобная функция для 64-битных целых чисел в C ++?

    Влияет ли мощность на источник питания на максимальную выходную мощность?

    Панель задач Windows 10 и меню «Пуск» не загружаются

    Select2 не работает, если он встроен в загрузочный модальный

    Общая библиотека C ++ с шаблонами: ошибка неопределенных символов

    Разделение жесткого диска дает прирост производительности?

    Есть ли простой способ отключить сенсорный планшет этого ноутбука?

    как передать параметры в запрос в SQL (Excel)

    Как перенаправить многословную сборку мусора в файл?

    Давайте будем гением компьютера.