2013-02-10 6 views
4

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

+0

Это то, что вы имеете в виду? http://stackoverflow.com/questions/2868047/fullscreen-activity-in-android – Sean

+0

Я думаю, что мой ответ может вам помочь. – dayanruben

ответ

13

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

<category android:name="android.intent.category.HOME" /> 

Остальные все можно отключить.

Добавить это в манифест.

<uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/> 

в OnCreate()

this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    setContentView(R.layout.activity_home); 
    View v = findViewById(R.id.home_view); 
    v.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE); 

где home_view является родительское представление XML-файла.

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
      return false; 
     } 

public void onWindowFocusChanged(boolean hasFocus) 
    { 
      try 
      { 
       if(!hasFocus) 
       { 
        Object service = getSystemService("statusbar"); 
        Class<?> statusbarManager = Class.forName("android.app.StatusBarManager"); 
        Method collapse = statusbarManager.getMethod("collapse"); 
        collapse .setAccessible(true); 
        collapse .invoke(service); 
       } 
      } 
      catch(Exception ex) 
      { 
      } 
    } 
+1

спасибо, что это работает. – user2043602

+1

Это не работает для JellyBean 4.3 –

0

это в вашем методе OnCreate():

requestWindowFeature(Window.FEATURE_NO_TITLE);

EDIT: Скрытие строки состояния потребуется ваше приложение будет полный экран или корневым.

+0

thanks; как только я использую ваше предложение, мое приложение краш. Мне не нужно скрывать название приложения, но чтобы скрыть панель с доступом к сети и параметрам или защитить ее паролем по соображениям безопасности.я не могу запустить устройство, потому что решение будет использоваться с потребительским планшетом и с важным номером, поэтому я не могу укоренять все устройства. – user2043602

+0

Извините, что этого не сделать. Что касается кода, который я вам рекомендовал, поместите его в метод onCreate() и поместите его выше или ниже (извините, а не на моем рабочем столе в данный момент) супер на создание. – 2013-02-11 16:09:49

5

Tablet, который будет использоваться не укоренены

Тогда вы не можете скрыть его. Однако вы можете использовать SYSTEM_UI_FLAG_HIDE_NAVIGATION, чтобы скрыть это временное, но он будет получать видны, когда пользователь касается экрана:

Существует ограничение: потому, что элементы навигации настолько важны, наименьшее взаимодействие с пользователем заставит их вновь немедленно. Если это произойдет, и этот флаг и SYSTEM_UI_FLAG_FULLSCREEN будут очищены автоматически, так что оба элемента снова появятся на том же времени.

+3

Это правильно. Приложениям не разрешено выполнять действия, которые могут быть использованы как атака отказа в обслуживании пользователя, а также препятствовать доступу пользователя к кнопкам Home или Recents. – adamp

+0

спасибо. но в моем проекте мне нужно создать 2 профиля с доступом ко всем приложениям, а другой - с ограниченным доступом и с некоторым приложением. их для меня нужно скрыть это не временное, но все время. – user2043602

7

Вы можете скрыть нижнюю панель, я использовал этот код, чтобы скрыть:

getWindow().getDecorView().setSystemUiVisibility(View.GONE); 

использовать этот код для андроид поле с клавиатуры или пульта дистанционного управления.

1

Вы можете скрыть навигационную панель на 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 

См следующее: Hiding the Navigation Bar

+0

работает для меня в леденец - за исключением того, что он возвращается, – Clocker