使用am startservice重启SystemUI

9

我一直在尝试使用以下内容在我的应用程序中重新启动SytemUI,但是它没有起作用,我使用的是Android 4.0.4。有什么帮助吗?

am startservice -n com.android.systemui/.SystemUIService

在adb shell中可以使用,但在我的应用程序或android终端中无法使用。

我在我的应用程序中使用的代码:

Process mSuProcess; mSuProcess = Runtime.getRuntime().exec("su"); 

DataOutputStream mSuDataOutputStream = new DataOutputStream(mSuProcess.getOutputStream()); 

mSuDataOutputStream.writeBytes("am startservice -n com.android.systemui/.SystemUIService\n");

adb shell 在这种情况下可能是以 root 权限运行的。你试用的手机是否已经 root 了? - auselen
是的,它已经获取了root权限。我正在运行“su”命令,类似于Process mSuProcess; mSuProcess = Runtime.getRuntime().exec("su"); - Neal
如果您运行shell而不是su会发生什么? - auselen
如何运行它?mSu=Runtime.getRuntime().exec("adb");? - Neal
投票需要15点声望,我没有它 :/。 - Neal
你知道这种行为的原因吗?我很好奇。谢谢。 - Tamás Barta
2个回答

10

在互联网上搜索了很久后,我通过以下方式成功在4.2设备上显示了系统栏:

am startservice --user 0 -n com.android.systemui/.SystemUIService

有些人使用-a选项(而不是-n选项),但这会导致我的设备出现错误:

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


这个很好用。我注意到当隐藏SystemUI时,桌面图像也会消失,这很好。但是当再次显示SystemUI时,桌面图像直到重新启动才会重新出现。有人知道一种不需要重新启动就可以刷新或重新加载它的方法吗? - Dallas187
哇,谢谢!这个可行。你知道为什么在我的Kitkat设备(自定义AOSP ROM)上没有--user 0就无法运行吗? - alexislg

4

使用shell代替su,例如;

Process mSuProcess;  mSuProcess = Runtime.getRuntime().exec("sh"); 

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