2013-02-10 2 views
4

내부 응용 프로그램에서 사용하기 위해 실행 프로그램을 만들었습니다. 몇 가지 보안상의 이유로 시스템 바를 숨기고 싶습니다 (매개 변수에 대한 액세스 권한은 설치된 응용 프로그램에 대한 액세스 권한). 그러나 나는 이것을 어떻게하는지 모른다. 사용할 타블렛은 루팅되지 않습니다. 제발 도와 주실 수 있습니까? 당신의에서 onCreate() 메소드에서시스템 바를 숨길 수 있습니다

+0

Hiding the Navigation Bar 당신이 무슨 뜻인가요 :

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 

은 다음을 참조하십시오 :이 조각은 탐색 모음 및 상태 표시 줄을 모두 숨 깁니다? http://stackoverflow.com/questions/2868047/fullscreen-activity-in-android – Sean

+0

내 대답이 도움이 될 수 있다고 생각합니다. – dayanruben

답변

13

당신은 그것을 숨길 수는 없지만 집을 제외하고는 비활성화 할 수 있습니다. 이를 위해 응용 프로그램을 홈 카테고리로 지정하고 사용자가 선택할 수 있도록 할 수 있습니다.

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

나머지는 모두 비활성화 할 수 있습니다.

이것을 매니페스트에 추가하십시오. 내부에서 onCreate

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

() home_view는 XML 파일의 부모 도면이다

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); 

.

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

사용 키보드 또는 원격으로 안드로이드 상자 코드 :

@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

넣어이 :

requestWindowFeature(Window.FEATURE_NO_TITLE);

편집 : 상태 표시 줄을 숨기기하는 응용 프로그램이 전체 화면 또는 뿌리를 필요로한다. 사용됩니다

+0

감사합니다. 귀하의 제안을 사용하면 응용 프로그램이 손상됩니다. 나는 응용 프로그램의 제목을 숨기고 네트워크 및 매개 변수에 대한 액세스 권한을 숨기거나 보안상의 이유로 암호로 보호하지 않아도됩니다.솔루션이 소비자 태블릿과 중요한 번호로 사용되어 모든 장치를 뿌리 뽑을 수 없기 때문에 장치를 뿌리 내릴 수 없습니다. – user2043602

+0

죄송합니다. 내가 추천 한 코드는 onCreate() 메서드에 넣고 위 또는 아래에 놓는다. (미안하지만, 지금은 내 데스크톱이 아니다. –

5

태블릿은 다음

을 뿌리하지 않는 당신은 그것을 숨길 수 없습니다. 사용자가 화면을 터치하면 당신은, 그러나 그것은 일시적으로 숨길 SYSTEM_UI_FLAG_HIDE_NAVIGATION를 사용할 수 있지만, 눈에 보이는 얻을 것이다 : 탐색 컨트롤이 매우 중요하기 때문에, 최소한의 사용자 상호 작용은 다시 그들을가 발생합니다 제한이 있습니다

바로. 이 플래그와 SYSTEM_UI_FLAG_FULLSCREEN은 모두 이 자동으로 지워 지므로 두 요소가 동일한 시간에 다시 나타납니다.

+3

이것은 맞습니다. 앱은 사용자에 대한 서비스 거부 공격으로 사용할 수있는 작업을 수행 할 수 없으며 사용자가 집 또는 최근 사용 버튼에 액세스하지 못하도록 제한합니다. 덕분에 – adamp

+0

. 하지만 내 프로젝트에서, 나는 모든 응용 프로그램에 대한 액세스 권한과 제한된 액세스 권한 및 일부 응용 프로그램을 포함하는 2 개의 프로파일을 작성해야합니다. 나는 일시적이 아니라 모든 시간을 숨길 필요가있다. – user2043602

7

당신은 내가 숨이 코드를 사용 하단 표시 줄을 숨길 수 있습니다.

1

SYSTEM_UI_FLAG_HIDE_NAVIGATION 플래그를 사용하여 Android 4.0 이상에서 탐색 모음을 숨길 수 있습니다.

+0

은 롤리팝에서 작동합니다 - 화면을 터치했을 때 돌아 오는 것을 제외하고는 – Clocker