5

我正在開發平板電腦的應用程序,其中要求是在平板電腦的全屏上運行應用程序。如何隱藏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. 以上可用的應用程序(即surelock,隱藏欄等)也隱藏酒吧。 這意味着他們正在使用某件事來做到這一點。在我們的應用程序中可以使用這個 東西,因此用戶不需要分開下載這些 應用程序。

請指導我。

我知道這不是一個好主意。但我的應用程序只適用於Android 4.0或更高版本的平板電腦,並且平板電腦只能運行這一個應用程序,因此我們不需要返回並使用主屏幕按鈕。這就是爲什麼我的要求是全屏使用應用程序。

+1

我不認爲隱藏系統欄是個好主意,因爲這是用戶實際上可以控制應用程序行爲的位置 - 返回按鈕/主頁按鈕。 – hardartcore

+0

http://stackoverflow.com/a/12605313/931982 – stinepike

回答

5

這是不可能的,除非你有root權限。或者,您可以創建一個launcher application

否則它將超出您的應用程序的範圍隱藏系統/導航欄。

+0

你是什麼意思「只有當你有根訪問權限或者你已經創建了任何啓動器應用程序時纔有可能。」 ? –

+1

Android是基於Linux的操作系統。因此,在Linux中,android也有兩種類型的用戶:1.超級/ root用戶2.普通用戶。現在,如果您獲得root用戶訪問權限,或者您創建任何應用程序爲Go Launcher或類似的東西,那麼只有您可以執行您想要的操作 – Shrikant

+0

如何獲得我的應用程序的root權限?以及如果我有root權限來隱藏系統欄是可能的? –

9

如果你有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(); 
} 

See this

+0

嗨,答案完全正常工作。但是我怎樣才能再次顯示酒吧,你可以幫忙嗎? – mesopotamia

0

很多在互聯網上搜索後,我設法讓系統欄隱藏並使用出現在4.2設備:

要隱藏:

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

或者對於小於14的API,請使用79而不是42。您可能還需要包含SET_DEBUG_APP權限,在這種情況下,您需要使用系統密鑰對應用程序進行簽名或將其安裝在/ system/app /目錄中。

所示:

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

另外一些人使用-a(而不是-n)選項,雖然這是導致我的設備上的錯誤:

錯誤:未找到;沒有服務開始。

7

從Android API 4.0及更高版本,您可以使用以下代碼來隱藏底部的系統欄。

View decorView = getWindow().getDecorView(); 
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
      | View.SYSTEM_UI_FLAG_FULLSCREEN; 
decorView.setSystemUiVisibility(uiOptions); 
+0

這一個工作就像一個魅力!謝謝! – NateW

相關問題