libsuperuser实时获取命令输出

时间:2015-01-06 16:22:32

标签: java android root

我从未使用libsuperuser但只使用roottools。现在我想切换到libsuperuser,但我找不到以root身份调用命令并在不等待命令完成的情况下读取其输出的方法。 使用roottools很容易,因为它有一个方法,每次进程将新行写入stdout时调用。 但是使用libsuperuser我只找到Shell.SU.run()返回输出但仅在进程完成时返回。如何使用libsuperuser实时读取输出行?

1 个答案:

答案 0 :(得分:1)

您必须使用Shell.Interactive.addCommand()及其回调:

Shell.Interactive rootSession = new Shell.Builder().useSU().open(/*...*/);

会话打开后,您可以添加命令:

rootSession.addCommand(new String[] { "ls -l /sdcard" },
    1, // a command id
    new Shell.OnCommandLineListener() {
        @Override
        public void onCommandResult(int commandCode, int exitCode) {
            // ...
        }
        @Override
        public void onLine(String line) {
            // ...
        }
    });

您正在寻找onLine(String line)

请参阅Chainfire的libsuperuser存储库中的sample code "InteractiveActivity"