Android Root выполняет su с параметрами

У меня проблема с выполнением su с параметрами (с пробелом ?!). Мой Command.java выглядит так:

public class Command
{
    Process process;

public String executeCommand(String command)
{

    StringBuffer output = new StringBuffer();

    try {
        process = Runtime.getRuntime().exec(command);
        process.waitFor();
        BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));

        String line = "";
        while ((line = reader.readLine())!= null) {
            output.append(line + "\n");
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
    String response = output.toString();
    return response;
}
}

В моем MainActivity он работает для отдельных команд.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TextView content = (TextView) findViewById(R.id.txt_content);

    Command cmd = new Command();

    String outp = cmd.executeCommand("su -c 'id'");
    Log.d("OOOOOOUT", outp);

    content.setText(outp);

}

Результат показывает, что он работает:

D/OOOOOOUT: uid=0(root) gid=0(root) context=u:r:init:s0

Это также работает для команды ls. Но когда я пытаюсь разобрать аргумент с параметрами, он не будет выполнен.

Например.

    String outp = cmd.executeCommand("su -c 'ls /data/data/'");
    Log.d("OOOOOOUT", outp);

    content.setText(outp);

Я также попробовал следующее:

String outp = cmd.executeCommand("su -c \'ls /data/data/\'");
String outp = cmd.executeCommand("su -c 'ls -l'");

И даже больше. Когда я выполняю эту команду непосредственно внутри оболочки, я получаю следующий вывод:

[email protected]:/ $ su -c 'ls -l'
drwxr-xr-x root     root              1970-06-20 18:01 acct
drwxrwx--- system   cache             2016-06-21 22:06 cache
-rwxr-x--- root     root       272364 1970-01-01 01:00 charger
dr-x------ root     root              1970-06-20 18:01 config

Я также попытался использовать полный путь:

[email protected]:/ $ /system/xbin/su -c 'ls -l'                                
drwxr-xr-x root     root              1970-06-20 18:01 acct
drwxrwx--- system   cache             2016-06-21 22:06 cache

Также в приложении. Я думаю, это ошибка синтаксического анализа. Иногда я вижу людей, добавляющих "\ n" в конце команды? Понятия не имею, почему. Я действительно ценю любую помощь в этой теме. Спасибо!

Ответы на вопрос(1)

Решение Вопроса

что способ передачи аргументовsu Команда будет использовать строковый массив:

Runtime.getRuntime().exec(new String[]{"su","-c", "ls /data/data/"});
 user332523011 июл. 2016 г., 19:52
Спасибо! Этот работает :)

Ваш ответ на вопрос