Установить окно полноэкранного атрибута после возобновления на Android - PullRequest
0 голосов
/ 20 сентября 2011

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

Как я нашел здесь на SO, чтобы заблокировать кнопку домой, мне просто нужно сделать:

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

Основным недостатком этого является то, что строка состояния видна даже в файле манифеста, который я установил для полноэкранного режима

 android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

Одним из решений было бы установить полноэкранный режим в коде, поэтому я делаю

@Override
     public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    }

Пока все хорошо, приложение продолжает работать в полноэкранном режиме. Одна из основных проблем, если пользователь нажимает кнопку питания, телефон переходит в режим ожидания. При повторном нажатии и разблокировке экрана приложение снова отображает строку состояния. Я не могу установить параметры окна снова, так как он уже имеет содержимое. Кроме того, я думаю отключить кнопку питания, но я не знаю как. Я могу перехватить нажатие onKeyDown, но как мне заставить его ничего не делать?

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

           switch (keyCode) {

                case KeyEvent.KEYCODE_POWER:
                    ????????

                default:
                    return false;
                }
        }

Есть идеи по этим вопросам? Спасибо всем.

1 Ответ

0 голосов
/ 26 сентября 2011

На самом деле, после небольшого глубокого тестирования кажется, что настройка

this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); 

приводит к нежелательному поведению, например: нет сообщений Toast, приложение не отвечает, как сказано выше, не разрешает полноэкранное приложение. Поэтому я просто решил оставить кнопку «Домой», так как она включена по умолчанию. Было бы очень приятно от Google предложить возможность отключить кнопку ... даже если бы им нужно было сделать специальное разрешение для нее.

...