【问题标题】:Cannot Unhide Android System Bar after Hiding隐藏后无法取消隐藏 Android 系统栏
【发布时间】:2013-09-30 01:47:31
【问题描述】:

我在 4.3 上安装了 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”的完成代码。

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

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

谢谢!

【问题讨论】:

    标签: java android system root


    【解决方案1】:

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

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

    【讨论】:

    • 这段代码是通过 adb 而不是应用程序运行的。
    猜你喜欢
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多