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

4

我有一台安装了4.3版本的Nexus 10,已经取得了root权限。使用以下代码隐藏系统栏效果良好:

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”的完成代码。

隐藏和显示位于同一应用程序中的两个不同活动中,尽管我不知道这是否重要。

对于那些感兴趣的人,这是一个关于kiosk应用程序的问题,在运行时需要隐藏该栏,然后在从隐藏菜单退出应用程序时重新出现。

谢谢!

1个回答

4
在互联网上进行了大量搜索后,我终于成功地使用以下方法在4.2设备中隐藏和显示系统栏:
隐藏:
Runtime.getRuntime().exec("service call activity 42 s16 com.android.systemui");

如果API 版本小于14,可以使用79代替42。您可能还需要包含SET_DEBUG_APP权限,此时您需要使用系统密钥签名应用程序或将其安装在/system/app/目录中。

显示:

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

相反,有些人使用了-a选项(而不是-n选项),但这在我的设备上导致了错误:

错误:未找到;没有启动的服务。


1
这段代码是通过adb而不是应用程序运行的。 - DkPathak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接