2013-09-24 105 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