簡體   English   中英

Android Nougat,Runtime.exec無法正常工作

[英]Android Nougat, Runtime.exec won't work

我正在嘗試創建一個終端模擬器。 我的代碼是

ProcessBuilder builder = new ProcessBuilder("/system/bin/sh");
builder.redirectErrorStream(true);
builder.directory(f);
p = builder.start();

stdOut = p.getInputStream();
stdIn = p.getOutputStream();

stdIn.write(("ls\n").getBytes());
stdIn.write(("echo EOF\n").getBytes());

while(true) {
    int n;
    try {
        n = stdOut.read();
    } catch (Exception | Error e) {
        return;
    }

    if(n == -1) continue;

    char c = (char) n;
    if(c == '\n') {
        if(line.equals("EOF")) break;
        else {
            if(write) outputable.onOutput(line);
            outputMsg[0] = outputMsg[0] + "\n" + line;
            line = "";
        }
    } else {
        line = line + c;
    }
}

這段代碼在Android 6.0、5.0、4.0、3.0 ...上運行,而在Nougat(7.0)上無法運行。 沒有錯誤,沒有例外,什么都沒有。 它只是掛在這條線上:

n = stdOut.read();

InputStream .read()僅在流中沒有可用時才掛起。 有人知道解決方案嗎?

我使用Chainfire的庫libsuperuser解決了我的問題。 不是解決方案,但至少是解決方法。 而且,如果他願意,還可以調查代碼,尋找決定性的差異。

那不是我的情況,libsuperuser就像一個魅力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM