Я разрабатываю приложение, выполняющее несколько команд оболочки в разное время. Я использую следующий метод:Выполнение нескольких команд корневой оболочки в Android
public void RunAsRoot(String[] cmds){
Process p = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(p.getOutputStream());
for (String tmpCmd : cmds) {
os.writeBytes(tmpCmd+"\n");
}
os.writeBytes("exit\n");
os.flush();
}
Этот метод отлично работает, но он всегда открывать новую оболочку каждый раз, когда мне нужно, чтобы назвать его, так что он отображает раздражающий тост «Применение было предоставлено для корневого разрешения ». Я думаю, что это потому, что он всегда открывает и закрывает новую оболочку с доступом SU. Мой вопрос: есть ли способ оставить оболочку SU всегда открытой, чтобы я мог запускать свои команды, когда это необходимо, без получения тоста SU?
Проверьте https://github.com/Chainfire/libsuperuser или https://github.com/Stericson/RootTools –
Im фактически использует libsuperuser от chainfire, но Shell.SU.run всегда открывает новую оболочку! – iGio90