Переопределение кнопки Android HOME не работает

Я знаю, что этот вопрос задавали много раз, но ни одно из предложенных решений, похоже, не работает для меня. Я пробовал здесь,здесь и здесь

Мое требование: – Я хочу переопределить КНОПКУ ДОМОЙ и кнопку ПОСЛЕДНИЕ ПРИЛОЖЕНИЯ на Android. Я знаю, что это не лучшее, но требование таково, что я должен это сделать.

Мой код :-

@Override
    public void onAttachedToWindow() {
        super.onAttachedToWindow();
        this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {


        if(keyCode == KeyEvent.KEYCODE_HOME)
        {
            Log.d("Key","Home button clicked");
            return false;
        }

        if(keyCode == KeyEvent.KEYCODE_MOVE_HOME)
        {
            Log.d("Key","Home button clicked Msg 2");
            return false;
        }
        return super.onKeyDown(keyCode, event);
    }

Но onKeyDown() никогда не вызывается. И я получаю IllegalArgumentException: Тип окна не может быть изменен после того, как окно добавлено ошибка.

Я знаю, что один из способов отключить кнопку HOME — заставить мое приложение вести себя как приложение запуска. Но есть ли лучший способ сделать это?


person Xin Tao    schedule 16.09.2015    source источник


Ответы (1)


Вы не делаете это таким образом. Вы определяете один фильтр намерений для своей деятельности:

 <intent-filter>
      <action android:name="android.intent.action.MAIN" />

      <category android:name="android.intent.category.HOME" />
      <category android:name="android.intent.category.DEFAULT" />
 </intent-filter>
person ligi    schedule 16.09.2015
comment
это единственный способ? - person Xin Tao; 16.09.2015
comment
@Iigi: - это единственный способ? Я имею в виду, что нет другого пути? Я вроде это уже знаю. Проблема в том, что при таком подходе вызываются методы жизненного цикла активности onPause() и onResume(), чего я не хочу. Существует один метод onUserLeaveHint(), который вызывается при нажатии кнопки HOME. Разве мы не можем переопределить его для достижения того же результата?? - person Xin Tao; 16.09.2015
comment
@XinTao, чтобы делать то, что вы задаете в вопросе, на мой взгляд, да, но это немного зависит от того, что вы хотите сделать - я предполагаю, что это приложение в стиле киоска? - person ligi; 16.09.2015