Удаление трея уведомлений в андроиде

Некоторая справочная информация:

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

  • Мне нужно полностью отключить область уведомлений, то есть, даже если пользователь проведет вниз от верхней части экрана, строка состояния не должна появляться. Это тот, который показывает время автономной работы, соединение WiFi / 3G и т. Д.

  • Я уже сделал свое приложение полноэкранным, что скрывает строку состояния, но каким-то образом строка состояния все еще появляется, когда пользователь проводит пальцем вниз от верхней части экрана. Выполнение еще одного свайпа впоследствии откроет панель уведомлений.

  • Мое устройство работает на Jelly Bean, но предназначено для таких старых устройств, как Ice Cream Sandwich.

Как мне отключить панель уведомлений? Есть ли код, который может мне помочь, или это так же просто, как посоветовать пользователю отключить какие-то настройки (например, как iPad может просто отключить жесты в настройках устройства)?

Заранее спасибо,

Рей


person Wakka02    schedule 10.07.2013    source источник


Ответы (1)


Взгляните на это.

View disableStatusBar = new View(context);

WindowManager.LayoutParams handleParams = new WindowManager.LayoutParams(
    WindowManager.LayoutParams.FILL_PARENT,
    <height of the status bar>,
    // This allows the view to be displayed over the status bar
    WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
    // this is to keep button presses going to the background window
    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
    // this is to enable the notification to recieve touch events
    WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
    // Draws over status bar
    WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
    PixelFormat.TRANSLUCENT);

handleParams.gravity = Gravity.TOP;
context.getWindow().addView(view, handleParams);
person Cameron    schedule 10.07.2013
comment
Привет Кэмерон, ты проверял это? Он выглядит красиво и блестяще, но я не могу заставить его работать в моем приложении. Представление добавляется, но строку состояния все еще можно опустить. - person Wakka02; 11.07.2013
comment
У меня нет, извините. Я наткнулся на это , хотя, что может быть чем-то помочь. - person Cameron; 11.07.2013
comment
Похоже, что это функция безопасности на уровне Android, на который вы ориентируетесь. Вашему приложению потребуются специальные разрешения для закрытия строки состояния. Я бы посоветовал установить киоск-приложение, например LOCKiosk (просто первый, который я нашел) и разрешил запуск только вашего приложения. - person Cameron; 12.07.2013
comment
Менее техническим подходом было бы запечатать верхнюю часть экрана на витрине. Это изменение, которое я запросил для своего приложения. - person Archimedes Trajano; 03.11.2013
comment
@ArchimedesTrajano: предпочтительным способом было бы создать прозрачное наложение вверху, а затем проглотить все события касания, как описано в этом ответе. - person Groo; 21.11.2014