Я пишу приложение, которое включает в себя получение информации обо всех запущенных процессах (имя / имя пакета для начала).Я делаю это, вызывая «ps» в моем коде.Я запросил доступ суперпользователя из приложения, прежде чем вызывать команду "ps".Однако, когда я пытаюсь прочитать поток ввода, приложение зависает, и я не получаю никакого вывода в Logcat.Ниже приведен код, который я использую:
Process process = Runtime.getRuntime().exec("su");
DataOutputStream outputStream = new DataOutputStream(process.getOutputStream());
outputStream.writeBytes("ps -t -x -P -p -c");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String topInfo = bufferedReader.readLine(); //Where it freezes
while(topInfo != null)
{
Log.i(appInfo, topInfo);
topInfo = bufferedReader.readLine();
}
outputStream.flush();
outputStream.close();
Код работает, как и ожидалось, без запроса суперпользователя, однако результат состоит только из моего приложения и процесса "ps".
Есть личто-то, что я пропустил, или что-то, что мне нужно исследовать, прежде чем я попытаюсь это исправить?Любая помощь приветствуется.
Заранее спасибо.
PS Приложение запускается на корневом устройстве под управлением Android 7.1.1