以编程方式禁用系统栏(具有root访问权限)

时间:2015-01-29 00:21:39

标签: android adb

我可以使用终端客户端使用以下adb命令禁用系统栏:

    adb shell service call activity 42 s16 com.android.systemui

但是,我想以编程方式实现这一目标。我查找了如何以编程方式执行adb命令,并在下面找到代码:

      Process process = Runtime.getRuntime().exec("your command");
      BufferedReader bufferedReader = new BufferedReader(
      new InputStreamReader(process.getInputStream()));

我用上面的adb命令替换了“你的命令”,但它没有禁用系统栏。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

您需要root权限才能从应用中执行此操作,因为ADB可以访问 / system / bin / service ,但您的应用无法访问(请参阅应用和ADB的GID)。

Process su = null; 
try { 
    su = Runtime.getRuntime().exec("su");
    String cmd = "service call activity 42 s16 com.android.systemui\n";
    su.getOutputStream().write(cmd.getBytes());
    String exit = "exit\n";
    su.getOutputStream().write(exit.getBytes());
    su.waitFor(); 
} catch (Exception e) {
    e.printStackTrace();
} finally { 
    if (su != null) { 
        su.destroy(); 
    } 
}

您还应该检查第三方库以处理su命令:https://android-arsenal.com/details/1/451