2013-11-13 1 views
2

я пытаюсь написать на «/ MyFolder/данных» папку на андроид виртуального устройства во время испытания и сделать это, я делаю:процесс Android Java возвращает 1 при выполнении «су»

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, и он не создает папку. используя su mkdir/data/myFolder из оболочки adb отлично работает. Почему этот код? что значит? (я знаю, это означает, что что-то пошло не так, но что? не нашел никакой документации о значениях кода выхода Android android mkdir). Спасибо-х

+0

Что произойдет, если добавить пробел в вещь, которую вы пытались: 'Строковые CMD =«Су MKDIR»+ реж;'? – Jite

+0

Возможный дубликат [что означает su: process = Runtime.getRuntime(). Exec ("su");] (http://stackoverflow.com/questions/6100662/what-does-the-su-mean- process-runtime-getruntime-execsu) – Torben

+0

Я получаю тот же код ошибки (1) – idell

ответ

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(); 
     } 
+0

вот так, я перенаправляю sdtOutput и пишу в него «mkdir dir». не имеет смысла для меня. – idell

+0

Просьба указать, какая именно деталь вас смущает. – Torben

+0

не меня смущает, проблема в том, что, как вы писали, я пишу «mkdir dir» на стандартный вывод, я не выполняю команду «mkdir dir». – idell