String[] cmds = {"rm /mnt/sdcard/touch.txt"};
Process p = Runtime.getRuntime().exec("su"); < hangs here >
DataOutputStream os = new DataOutputStream(p.getOutputStream());
for (String tmpCmd : cmds) {
os.writeBytes(tmpCmd+"\n");
}
os.writeBytes("exit\n");
os.flush();
I tried installing SuperUser apk, but it also threw error :
D/Su.UpdaterFragment( 4169): /system/bin/busybox touch /data/sutest && /system/bin/busybox echo YEAH
E/Su.UpdaterFragment( 4169): Failed to execute root commands
E/Su.UpdaterFragment( 4169): java.io.IOException: write failed: EPIPE (Broken pipe)
E/Su.UpdaterFragment( 4169): at libcore.io.IoBridge.write(IoBridge.java:452)
E/Su.UpdaterFragment( 4169): at java.io.FileOutputStream.write(FileOutputStream.java:187)
E/Su.UpdaterFragment( 4169): at java.io.OutputStream.write(OutputStream.java:82)
E/Su.UpdaterFragment( 4169): at java.io.DataOutputStream.writeBytes(DataOutputStream.java:156)
E/Su.UpdaterFragment( 4169): at com.noshufou.android.su.UpdaterFragment.executeCommand(UpdaterFragment.java:795)
root@android:/ # id
uid=0(root) gid=0(root)
06-29 01:19:24.901: D/USBStorageActivity(1246): uid=10043(app_43) gid=10043(app_43) groups=1015(sdcard_rw)
Process process = Runtime.getRuntime().exec("/system/xbin/su");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
Log.d(TAG,bufferedReader.readLine());
readline throws null pointer exception.
root@android:/ # su app_43
root@android:/ $ su
su: uid 10043 not allowed to su
But my question is, what difference is the difference between rooting the device and root shell available via adb ?
My SuperUser app does not even list any attempts from my app to get su access.
-- Shankar