Как скрыть нижнюю системную панель на планшете Android

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

Для этого я использовал следующий код в своей основной деятельности:

getWindow().requestFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

Этот фрагмент кода удаляет только строку заголовка и панель действий. Но в планшетах есть нижняя системная панель (с кнопкой «Домой» и «Назад»). Я также хочу удалить или скрыть эту системную панель.

Я искал, но есть только следующее решение:

  1. Нет API для удаления или скрытия системной панели.
  2. Вы можете использовать какое-нибудь приложение для Android, чтобы скрыть системную панель. (например: surelock, hidebar и т. д.)

Мой вопрос:

  1. Действительно ли это невозможно в Android?
  2. Над доступным приложением (например, верной блокировкой, скрытой панелью и т. д.) также скрывается панель. Это означает, что они используют что-то для этого. Можно использовать это что-то в нашем приложении, чтобы пользователю не требовалось загружать это приложение отдельно.

Пожалуйста, помогите мне.

Я знаю, что это не очень хорошая идея. Но Мое приложение предназначено только для планшетов с Android 4.0 или более поздней версии, и этот планшет будет запускать только это единственное приложение, поэтому нам не нужно возвращаться и использовать кнопку «Домой». Вот почему я требую использовать приложение. на весь экран.


person Manoj Agarwal    schedule 17.04.2013    source источник
comment
я не думаю, что скрывать системную панель - хорошая идея, потому что это место, где пользователь фактически может контролировать поведение вашего приложения - кнопка «Назад» / кнопка «Домой».   -  person hardartcore    schedule 17.04.2013
comment
stackoverflow.com/a/12605313/931982   -  person stinepike    schedule 17.04.2013


Ответы (4)


Если у вас есть root-доступ, вы можете использовать этот код, иначе он не разрешен.

try{
    //REQUIRES ROOT
    Build.VERSION_CODES vc = new Build.VERSION_CODES();
    Build.VERSION vr = new Build.VERSION();
    String ProcID = "79"; //HONEYCOMB AND OLDER

    //v.RELEASE  //4.0.3
    if(vr.SDK_INT >= vc.ICE_CREAM_SANDWICH){
        ProcID = "42"; //ICS AND NEWER
    }



    //REQUIRES ROOT
    Process proc = Runtime.getRuntime().exec(new String[]{"su","-c","service call activity "+ ProcID +" s16 com.android.systemui"}); //WAS 79
    proc.waitFor();

}catch(Exception ex){
    Toast.makeText(getApplicationContext(), ex.getMessage(), Toast.LENGTH_LONG).show();
}

см. это

person Arun C    schedule 17.04.2013
comment
Привет, ответ полностью работает нормально. Но как я могу снова показать панель, не могли бы вы помочь? - person mesopotamia; 25.07.2016

В Android API 4.0 и более поздних версиях вы можете использовать следующий код, чтобы скрыть нижнюю системную панель.

View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
          | View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
person Samik Bandyopadhyay    schedule 28.05.2014

Это невозможно, если у вас нет root-доступа. Кроме того, вы можете создать файл launcher application.

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

person Shrikant Ballal    schedule 17.04.2013
comment
Что вы подразумеваете под Это возможно только в том случае, если у вас есть root-доступ или вы создали какое-либо приложение для запуска. ? - person Manoj Agarwal; 17.04.2013
comment
Android — это операционная система, основанная на Linux. Как и в Linux, в Android также есть два типа пользователей: 1. Суперпользователь/пользователь root 2. Обычный пользователь. Теперь, если вы получите доступ пользователя root или создадите любое приложение как Go Launcher или что-то в этом роде, тогда только вы сможете делать то, что хотите. - person Shrikant Ballal; 17.04.2013
comment
Как я могу получить root-доступ к моему приложению? И как можно, если у меня есть root-доступ, скрыть системную панель? - person Manoj Agarwal; 17.04.2013
comment
Пожалуйста, прочитайте это полностью: androidcentral.com/root и скрытие системной панели, я думаю, вам нужно написать некоторые команды для него, я никогда не делал этого раньше. - person Shrikant Ballal; 17.04.2013
comment
Прежде чем рутировать свое устройство, убедитесь, что у вас действительно есть веская причина. - person Shrikant Ballal; 17.04.2013
comment
@Shrikant Можете ли вы опубликовать код, чтобы скрыть нижнюю панель для приложения запуска. У меня такая же проблема, и мое приложение - пусковая установка - person Karan; 05.08.2013

После долгих поисков в Интернете мне удалось скрыть и отобразить системную панель на устройстве 4.2, используя:

Прятаться:

Runtime.getRuntime().exec("service call activity 42 s16 com.android.systemui");

Или используйте 79 вместо 42 для API меньше 14. Вам также может понадобиться включить разрешение SET_DEBUG_APP, и в этом случае вам нужно, чтобы приложение было подписано системным ключом или установлено в каталоге /system/app/.

Показывать:

Runtime.getRuntime().exec("am startservice --user 0 -n com.android.systemui/.SystemUIService");

В качестве альтернативы некоторые люди использовали параметр -a (вместо -n), хотя это вызывало ошибку на моем устройстве:

Ошибка не найдена; ни одна служба не запускалась.

person TheIT    schedule 15.10.2013