Java 运行su-c“命令”进程
我想使用su启动命令并读取其输出。 我尝试了以下代码:Java 运行su-c“命令”进程,java,android,Java,Android,我想使用su启动命令并读取其输出。 我尝试了以下代码: String line; Process cat=Runtime.getRuntime().exec("su -c \"cat /etc/media_codecs.xml\""); BufferedReader catStream= new BufferedReader(new InputStreamReader(cat.getInputStream())); Buffered
String line;
Process cat=Runtime.getRuntime().exec("su -c \"cat /etc/media_codecs.xml\"");
BufferedReader catStream= new BufferedReader(new InputStreamReader(cat.getInputStream()));
BufferedReader catSerr= new BufferedReader(new InputStreamReader(cat.getErrorStream()));
cat.waitFor();
while((line=catSerr.readLine())!=null)
{
System.out.println(line);
}
while((line=catStream.readLine())!=null)
{
System.out.println(line);
}
如果我在adb外壳中手动插入此命令,它可以工作,但使用此代码,手机会向我请求root权限,如果我接受,我只能向stderr读取此字符串:
tmp mksh:cat/etc/media_codecs.xml:未找到
并且没有标准输出。原因?文件可能没有为应用程序进程装载,但更可能的是,错误消息暗示,该文件被解释为cat程序名称的一部分,而不是其参数。请注意,对于“su”程序的行为没有标准-任何实际用于此目的的都是第三方黑客。谢谢。我能做些什么来解决这个问题呢?