2015-12-03 2 views
8

Я пытаюсь удалить кнопку «Домой» и кнопку «Многопоточность». Идея состоит в том, чтобы полностью удалить его из работающего приложения, лучше, если мы полностью удалим его из каждого приложения на планшете, с которым мы работаем. Использование полноэкранного режима - это не то, что мы хотим, так как пользователь не сможет выйти из полноэкранного режима, даже если он этого захочет (это обычное коммерческое приложение, это желаемое поведение по нескольким причинам).Android - Удаление кнопки «Домой» и «Навигация»

Nexus 10 without the home and navigation buttons

Это результат на Nexus 10. Мы достигли этого, беря источники SystemUI и изменяя их до компиляции CyanogenMod.

К сожалению, мы должны повторить это в Asus ZenPad 10, который не имеет доступного CyanogenMod. У нас есть версия, которая позволяет нам создавать системные приложения, но изменять каждое приложение в системном приложении не то, что мы хотим.

Мы нашли в этой ссылке: http://developer.oesf.biz/em/developer/reference/eggplant/constant-values.html#android.view.View.STATUS_BAR_DISABLE_HOME

То есть флаги для отключения кнопки домой и кнопки навигации, но они могут использоваться только с системными приложениями.

Мы попытались получить SystemUI.apk, уже скомпилированный в планшет, декомпилируем его и изменим. Проблема в том, что или у нас есть бесполезные файлы smali или у них есть только файлы res/и AndroidManifest.xml (Asus изменил SystemUI.apk на два его собственных apks).

Итак ... мы немного отчаялись здесь, ах. Ищете подсказки/идеи, чтобы попытаться удалить эти кнопки. Лучше не перекомпилировать или сделать что-то странное.

+0

Вы можете попробовать другой хак, если вам просто нужно одно приложение работает fulscreen. Вы можете запустить службу в фоновом режиме, которая будет периодически проверять, включено ли ваше полноэкранное приложение, и когда пользователь пытается покинуть ваше приложение, служба немедленно запускает ваше приложение. Это не совсем то, что вы хотите, но, возможно, это может помочь –

ответ

0

Вы спросите разрешения у пользователя. В этом автомобиле это ты. Будьте осторожны, так как вам придется реализовать выход из приложения.

Ссылка: disable home

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

+0

, к сожалению, это решение не является постоянным ..это? Мы должны избегать того, чтобы пользователь снова включил навигационную панель. – Filnik

+0

Как вы собираетесь включить ее снова, если она постоянна? – SamuelD

+0

Что-то вроде этого: https://play.google.com/store/apps/details?id=com.kiddoware.kidsplace&hl=ru? – SamuelD

3

Это возможно с помощью комбинации разрешений, как Immersive Full-Screen Mode в сочетании с SYSTEM_UI_FLAG_HIDE_NAVIGATION и SYSTEM_UI_FLAG_FULLSCREEN флаги. Эти флаги скрывают панель навигации и состояния, теперь, когда у вас есть пустой экран, выкладываете линейную лайку в нижней части экрана, только видимый значок назад, чтобы создать эффект того, что вы хотите. ТАКЖЕ отмечают, что важно понимать, что после того, как пользователь переместится вверх, будет видна нормальная панель навигации (не уверен, может ли она быть обработана с помощью события перехвата касания).

В качестве альтернативы вы можете попробовать это решение, упомянутые здесь также How to disable Home and other system buttons in Android?

также передать этот GitHub проект (работает, если есть только аппаратные средства кнопки навигации) https://github.com/shaobin0604/Android-HomeKey-Locker

Последнее, но не менее Eсть ответ на commsware, который проливает больше света на этот предмет, может пригодиться. Not able disable Home button on specific android devices

+0

спасибо, но я пробовал все предлагаемые вами решения, но ничего не подходит. Первый - это нормально, но нам нужно постоянное решение, а не то, что пользователь может избежать. На самом деле, пусковая установка уже удалила кнопки, но активность нашего приложения возвращает их обратно. Возможно, мы можем попытаться избежать того, что действие сбрасывает кнопки (не знаю, как это сделать) – Filnik

+0

Включая режим погружения, проверьте это. http://developer.android.com/training/system-ui/immersive.html –

+0

Да, использование может уйти от этого – Filnik

0

использование режима Погрузить, используйте этот код в onResume(), так что каждый раз, когда вы получаете обратно к деятельности его Ран, и они сокрыты

View decorView = getWindow().getDecorView(); 
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
          | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
          | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
          | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
          | View.SYSTEM_UI_FLAG_FULLSCREEN 
          | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); 
+0

да, но это не исправно. Пользователь может избежать этого – Filnik

1

Попробуйте Android for work APIs и refer here .Using это Apis вы можете получить полный контроль над устройством и отключить все, что вы хотите. Устройство можно использовать только для одного приложения.

Корпоративный однопользовательский (COSU) является подмножеством сценария, связанного с корпорацией, для общих или специальных устройств. В отличие от корпоративных устройств, которые связаны с отдельными сотрудниками, устройства COSU связаны с конкретными бизнес-функциями. Например, устройство COSU может использоваться как киоск.

Вы также можете попытаться интегрировать пользовательскую MDM (управление мобильного устройств) решение, предоставляемые поставщиками OEMS/MDM/MDM партнеры, как Samsung, HTC, AirWatch и т.д. Эту работу на устройствах до леденца слишком и обеспечить более API для управления устройством, чем предусмотрено решением по умолчанию для Android.

Я знаю, что решение Samsung MDM/Knox хорошее, и у него есть API-интерфейсы для управления каждой частью устройства.Refer- http://www.samsung.com/levant/business/solutions-services/mobile-solutions/security/mobile-device-management. У них есть режим киоска, который похож на COSU.

+0

спасибо за подсказка. Похоже, это лучший ответ, но я должен проверить, действительно ли он работает на леденец. Работа над ним :) – Filnik

+0

Мне нужно подождать ответа Google :(мы увидим, ответят ли они вовремя – Filnik

+0

@Filnik Я полагаю, что это работает и на леденец. В противном случае вы можете попробовать решения, предоставляемые OEMS/другими поставщиками, если это возможно. Обновлен ответ. –

0

Конечно, вы не можете REMOVE любые системы Кнопка сек как Мощность, Volume +/-, Главная, Назад или Меню. Вы можете только скрыть или показать Главная, Назад или меню только тогда, когда они являются виртуальными (напротив Solid Баттона с).

Между тем, скрытие навигационной панели ограничено. Он может быть выполнен только на Android 4.0 и выше. Итак, если вы хотите это сделать, вам нужно использовать флаг SYSTEM_UI_FLAG_HIDE_NAVIGATION. Этот фрагмент кода скрывает как панель навигации и строка состояния:

View decorView = getWindow().getDecorView(); 
// Hide both the navigation bar and the status bar. 
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as 
// a general rule, you should design your app to hide the status bar whenever you 
// hide the navigation bar. 
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
       | View.SYSTEM_UI_FLAG_FULLSCREEN; 
decorView.setSystemUiVisibility(uiOptions); 

И, если вы хотите установить содержание вашего приложения, чтобы появиться позади панели навигации, вам нужно SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION флаг. Вам также может понадобиться использовать SYSTEM_UI_FLAG_LAYOUT_STABLE, чтобы ваше приложение поддерживало стабильную компоновку.

0

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

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

+0

Ответы на ссылки очень разочарованы здесь, потому что ссылки могут стать мертвыми в будущем. Я предлагаю вам отредактировать свой ответ с помощью цитат из источников, которые вы цитируете. –