执行“su”时,Android java进程返回1

时间:2013-11-13 11:47:31

标签: java android mkdir exit-code

我正在尝试在测试期间写入android虚拟设备上的“/ data / myFolder”文件夹,为此,我这样做:

String[] cmd ={"su", "mkdir", dir};
    int out = 99;

    try {

        Process p = Runtime.getRuntime().exec(cmd);
        out = p.waitFor();
        BufferedInputStream in = new BufferedInputStream(p.getErrorStream());
        byte[] bytes = new byte[4096];
        while (in.read(bytes) != -1) {

        }

        in.close();
        logger.info("exit status:" + out);

    } catch (IOException e) {
        logger.severe("IOException " + e.getMessage());
        e.printStackTrace();
    } catch (InterruptedException e) {
        logger.severe("InterruptedException " + e.getMessage());
        e.printStackTrace();
    }
    if (out != 0) {
        logger.severe("Folder " + dir + " not created,exit status: " + out);
    }

或者我已经尝试了

String cmd ={"su mkdir" + dir}; 

但退出状态为1,它不会创建任何文件夹。使用来自adb shell的su mkdir / data / myFolder工作正常。 为什么这个代码?什么意思? (我知道这意味着出了问题,但是什么?没有找到任何关于android mkdir退出代码值的文档)。 感谢的

1 个答案:

答案 0 :(得分:0)

我使用下面的代码来发出命令

try {
            Process sh = Runtime.getRuntime().exec("su", null, null);
            OutputStream os = sh.getOutputStream();
            byte[] mScreenBuffer = ("mkdir dir ")
                    .getBytes();
            os.write(mScreenBuffer);
            os.flush();
            os.close();
            sh.waitFor();
        } catch (Exception e) {
            e.printStackTrace();
        }