2015-01-20 112 views
8

我用這個答案,實現了Kiosk模式我的應用程序:https://stackoverflow.com/a/26013850我可以禁用systemui從我的android應用程序內?

我紮根與金吾根的平板電腦,然後執行以下命令:

adb shell > 
su > 
pm disable com.android.systemui > 

我建立一個應用程序,將只在我們的設備上用作信息亭...

它工作的很好,但是..我想從Android應用程序本身執行禁用和啓用系統ui。

在應用程序中是否可以使用系統命令?

+0

可以安全地禁用com.android.systemui或在某些設備上發生某些問題嗎? – JohnyTex 2015-04-20 14:54:28

+2

@JohnyTex:這是一個特殊情況,我需要用戶除了使用我的應用程序之外無法做任何事情。該設備由我的公司擁有,並放入售貨亭。這樣做幾乎不可能退出您所在的任何應用程序,因爲不再有主頁按鈕,後退按鈕或通知下拉區域。 – silversunhunter 2015-04-22 19:09:37

+0

我遇到了禁用systemui沒有幫助的情況,即使禁用了它也仍然運行。請參閱:http://android.stackexchange.com/questions/119508/app-is-running-even-though-disabled-why 禁用時它如何運行? – JohnyTex 2015-08-17 12:33:56

回答

14
/** 
* Uses Root access to enable and disable SystemUI. 
* @param enabled Decide whether to enable or disable. 
*/ 
public void setSystemUIEnabled(boolean enabled){ 
    try { 
     Process p = Runtime.getRuntime().exec("su"); 
     DataOutputStream os = new DataOutputStream(p.getOutputStream()); 
     os.writeBytes("pm " + (enabled ? "enable" : "disable") 
       + " com.android.systemui\n"); 
     os.writeBytes("exit\n"); 
     os.flush(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

工作正常。使用方法:

setSystemUIEnabled(true); // Enable SystemUI 
setSystemUIEnabled(false); // Disable SystemUI 
+0

我即將嘗試這個,但我有一個問題。因爲我正在使用一個用於虛擬化的root軟件(一次單擊根訪問),我想知道是否有一種方法讓這個類知道它是否具有root訪問權限。 – silversunhunter 2015-01-20 21:32:24

+0

還有一個問題:它應該是(布爾「啓用」)? – silversunhunter 2015-01-20 21:33:11

+1

您可以通過調用setSystemUIEnabled(true)來使用此函數;在你的代碼中的某處。剛剛測試過,工作正常。確定是否有root acces被解釋[here](http://stackoverflow.com/a/8097801/4193263)。如果它幫助你,請接受這個答案。 – ByteHamster 2015-01-20 21:40:52

相關問題