ProcessBuilder.start()with" su"命令块线程

时间:2015-09-15 13:22:52

标签: java android multithreading process su

我正在实施终端"模拟器" /"启动器"在我的应用程序中我想让用户使用所有android shell命令。这很有效,直到我使用" su"命令。这是源代码:

代码:

    ProcessBuilder processBuilder = new ProcessBuilder(input);        
    processBuilder.directory(info.currentDirectory);

    Process process;

    try {
        process = processBuilder.start();
    } catch (IOException e) {
        return 1;
    } 

    process.waitFor();

    InputStream i = process.getInputStream();
    InputStream e = process.getErrorStream();

    BufferedReader ir = new BufferedReader(new InputStreamReader(i));
    BufferedReader er = new BufferedReader(new InputStreamReader(e));

    String s = null;
    output = "";
    for(int count = 0; count == 0 || s != null; count++) {
        s = ir.readLine();
        if(s != null) {
            if(count == 0) 
                output = output.concat(mContext.getString(R.string.output_label) + "\n");
            output = output.concat(s + "\n");
        }
    }
    s = null;
    for(int count = 0; count == 0 || s != null; count++) {
        s = er.readLine();
        if(s != null) {
            if(count == 0) 
                output = output.concat(mContext.getString(R.string.error_label) + "\n");
            output = output.concat(s + "\n");
        }
    }
    process.destroy();

在任何情况下都会永久阻止主线程:如果我只调用process.waitFor,并且我使用其中一个InputStream对象。

问题是什么? SU权限通常被授予......

0 个答案:

没有答案