Я пытаюсь запустить rsync на своем устройстве. У меня есть двоичный код в /system/xbin/rsync
, и я пытаюсь запустить его с Runtime.getRuntime().exec
. Я новичок в программировании на Android, поэтому пока не получаю разрешения пользователей Superuser.Android Runtime.getRuntime(). Exec и rsync
Мой код:
try {
Process process = Runtime.getRuntime().exec(
"/system/xbin/rsync -avzru /sdcard/Tinybox/ " +
"[email protected]::88124bb378ac994088e704d553de6f19");
System.out.print("RSYNC LAUNCHED\n");
// Reads stdout.
// NOTE: You can write to stdin of the command using
// process.getOutputStream().
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
int read;
char[] buffer = new char[4096];
StringBuffer output = new StringBuffer();
while ((read = reader.read(buffer)) > 0) {
output.append(buffer, 0, read);
}
reader.close();
// Waits for the command to finish.
process.waitFor();
System.out.print(output);
System.out.print("RSYNC FINISHED\n");
// return output.toString();
} catch (IOException e) {
throw new RuntimeException(e);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
И он не работает, он просто печатает "RSYNC НАЧАТЬ" "RSYNC ЗАВЕРШЕН".
Но если я бегу:
Process process = Runtime.getRuntime().exec("/system/xbin/rsync --help");
он отлично работает, я могу увидеть выход из окна LogCat.
Так что я думаю, я должен использовать разрешение привилегированного и поэтому я изменил мой код следующим образом:
try {
System.out.print("RSYNC STARTED\n");
Process process = Runtime.getRuntime().exec("/system/xbin/su");
DataOutputStream os = new DataOutputStream(process.getOutputStream());
DataInputStream is = new DataInputStream(process.getInputStream());
os.writeBytes("/system/xbin/rsync --help");
String output = new String();
String temp = new String();
output = is.readLine();
System.out.print(output);
os.flush();
System.out.print("RSYNC FINISHED\n");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
}
Но когда я запускаю код АРРЫ, замерзают без ошибок.
'зависает без ошибок', вы уверены, что нет LogCat? – Budius
Ничего, он печатает RSYNC НАЧАЛО и ничего больше. – phcaze
Является ли ваше устройство укорененным? –