2015-01-20 113 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

相关问题