2013-09-24 145 views
4

後,我有4.3根深蒂固的Nexus 10,和隱藏用下面的代碼在系統欄正常工作:無法取消隱藏Android系統欄隱藏

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

但是當我嘗試用下面的代碼來取消隱藏它,它從來不隱藏:

Process proc = Runtime.getRuntime().exec(new String[]{"am","startservice","-n","com.android.systemui/.SystemUIService"}); 
proc.waitFor(); 

如果我發出「是」亞行shell命令,它像宣傳的那樣(系統欄再次出現)。圍繞根調用有一個try/catch,沒有例外。我從「am」中獲得了「1」的完成代碼。

隱藏和顯示是在同一個應用程序中的兩個不同的活動,但我不明白爲什麼這很重要。

對於那些有興趣的人來說,這是一個自助服務終端應用程序,當酒吧在運行時需要消失,然後在應用程序退出隱藏菜單時重新出現。

謝謝!

回答

4

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

要隱藏:

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

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

所示:

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

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

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

+1

此代碼正在通過adb而不是通過應用程序。 – DkPathak