android4.2中用程序调用shell命令不成功? androidshell4.2 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://bbs.csdn.net/topics/390329421看一下这个帖子吧。。 不知道你想表达什么 你机器root了你的应用没有root权限啊不信你把执行su之后的inputstream输出看看 process = Runtime.getRuntime().exec("su\n"); 确实没有考虑到这个问题,app获得的是systemUID,root权限要怎么获得呢.. 我修改了下 : 不用加 "\n" import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.InputStream;import java.io.InputStreamReader;public class Demo { public static void main(String[] args) { execCommand("ping www.baidu.com"); } public static void execCommand(String command) { Process process = null; DataOutputStream os = null; try { process = Runtime.getRuntime().exec(command); InputStream inputstream = process.getInputStream(); InputStreamReader inputstreamreader = new InputStreamReader( inputstream); BufferedReader bufferedreader = new BufferedReader( inputstreamreader); os = new DataOutputStream(process.getOutputStream()); // os.writeBytes(command+"\n"); os.writeBytes("ls \n"); os.writeBytes("exit\n"); os.flush(); String line = ""; StringBuilder sb = new StringBuilder(line); while ((line = bufferedreader.readLine()) != null) { sb.append(line); System.out.println(line); sb.append('\n'); } process.waitFor(); } catch (Exception e) { } }}执行结果 : PING www.a.shifen.com (61.135.169.125) 56(84) bytes of data.64 bytes from 61.135.169.125: icmp_req=1 ttl=56 time=12.8 ms64 bytes from 61.135.169.125: icmp_req=2 ttl=56 time=157 ms64 bytes from 61.135.169.125: icmp_req=3 ttl=56 time=12.2 ms64 bytes from 61.135.169.125: icmp_req=4 ttl=56 time=12.6 ms64 bytes from 61.135.169.125: icmp_req=5 ttl=56 time=281 ms64 bytes from 61.135.169.125: icmp_req=6 ttl=56 time=972 ms64 bytes from 61.135.169.125: icmp_req=7 ttl=56 time=35.0 ms64 bytes from 61.135.169.125: icmp_req=8 ttl=56 time=59.5 ms64 bytes from 61.135.169.125: icmp_req=9 ttl=56 time=393 ms64 bytes from 61.135.169.125: icmp_req=10 ttl=56 time=138 ms64 bytes from 61.135.169.125: icmp_req=11 ttl=56 time=954 ms代码是没问题的 看看手机里面有没有你需要的这些命令 少个回车符么?我试一下加了回车符没有效果,在shell下手动执行su,确实看到没有返回success/fail,恐怕是su命令有问题 辛苦了,谢谢大哥,在shell下手动执行su,确实看到没有返回success/fail,恐怕是su命令有问题 android无线打印 第三方 send2printer 等比缩放打印问题 点击应用启动问题 修改wifi优先级 我想学android中间件开发,应该看些什么书? android打开相机问题 Android中关于Topbar的跳转 如何查找layout中可以填的值 Android自定义类与Bitmap相同 关于调用系统播放器问题~~~~牛人请进~~新人学习~~~ Android源码下完后的./repo BLE 蓝牙writeCharactar疑惑 android widget内容显示以及自动更新
http://bbs.csdn.net/topics/390329421看一下这个帖子吧。。
不信你把执行su之后的inputstream输出看看
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;public class Demo { public static void main(String[] args) {
execCommand("ping www.baidu.com");
} public static void execCommand(String command) {
Process process = null;
DataOutputStream os = null;
try {
process = Runtime.getRuntime().exec(command); InputStream inputstream = process.getInputStream();
InputStreamReader inputstreamreader = new InputStreamReader(
inputstream);
BufferedReader bufferedreader = new BufferedReader(
inputstreamreader); os = new DataOutputStream(process.getOutputStream());
// os.writeBytes(command+"\n");
os.writeBytes("ls \n");
os.writeBytes("exit\n");
os.flush(); String line = ""; StringBuilder sb = new StringBuilder(line);
while ((line = bufferedreader.readLine()) != null) {
sb.append(line);
System.out.println(line);
sb.append('\n');
}
process.waitFor();
} catch (Exception e) {
} }
}执行结果 :
PING www.a.shifen.com (61.135.169.125) 56(84) bytes of data.
64 bytes from 61.135.169.125: icmp_req=1 ttl=56 time=12.8 ms
64 bytes from 61.135.169.125: icmp_req=2 ttl=56 time=157 ms
64 bytes from 61.135.169.125: icmp_req=3 ttl=56 time=12.2 ms
64 bytes from 61.135.169.125: icmp_req=4 ttl=56 time=12.6 ms
64 bytes from 61.135.169.125: icmp_req=5 ttl=56 time=281 ms
64 bytes from 61.135.169.125: icmp_req=6 ttl=56 time=972 ms
64 bytes from 61.135.169.125: icmp_req=7 ttl=56 time=35.0 ms
64 bytes from 61.135.169.125: icmp_req=8 ttl=56 time=59.5 ms
64 bytes from 61.135.169.125: icmp_req=9 ttl=56 time=393 ms
64 bytes from 61.135.169.125: icmp_req=10 ttl=56 time=138 ms
64 bytes from 61.135.169.125: icmp_req=11 ttl=56 time=954 ms代码是没问题的 看看手机里面有没有你需要的这些命令
加了回车符没有效果,在shell下手动执行su,确实看到没有返回success/fail,恐怕是su命令有问题