隐藏后无法取消隐藏Android系统栏

时间:2013-09-24 17:44:07

标签: java android system root

我在4.3上有一个root的Nexus 10,并使用以下代码隐藏系统栏工作正常:

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

如果我从adb shell发出“am”命令,它就像宣传的那样工作(系统栏重新出现)。根调用周围有一个try / catch,没有异常。我从“am”中得到完成代码“1”。

隐藏和显示在同一个应用程序中有两个不同的活动,但我不明白为什么这很重要。

对于那些感兴趣的人,这是一个自助服务终端应用程序,其中栏需要在其运行时消失,然后当应用程序退出隐藏菜单时重新出现。

谢谢!

1 个答案:

答案 0 :(得分:4)

在互联网上进行了大量搜索之后,我设法让系统栏隐藏并出现在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)选项,虽然这会导致我的设备出错:

错误:未找到;没有服务开始。