Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中以编程方式执行shell命令_Android_Shell_Process - Fatal编程技术网

在Android中以编程方式执行shell命令

在Android中以编程方式执行shell命令,android,shell,process,Android,Shell,Process,我有两个命令来执行和获取数据 我的.sh文件包含两个命令,如下所示 苏 dhcpcd eth0 当我试图在我的Android终端中通过键入 sh filename.sh 它不给我输出 但当我通过输入单独的行来执行它时,它就工作了。所以当我编程为 nativeProcess = Runtime.getRuntime().exec("su"); nativeProcess = Runtime.getRuntime().exec("dhcpcd eth0"); while ((line = br.re

我有两个命令来执行和获取数据 我的.sh文件包含两个命令,如下所示

苏 dhcpcd eth0

当我试图在我的Android终端中通过键入 sh filename.sh 它不给我输出 但当我通过输入单独的行来执行它时,它就工作了。所以当我编程为

nativeProcess = Runtime.getRuntime().exec("su");
nativeProcess = Runtime.getRuntime().exec("dhcpcd eth0");
while ((line = br.readLine()) != null) 
{
    contents.append(line + "\n");
}

这有什么不对?在Java中,我将输出内容设置为null,并启动一个新进程。因此,第一行生成一个新的
su
进程,它将简单地坐在那里等待您的输入。第二行启动一个新的
dhcpcd
进程,该进程没有特权,因此不会产生有用的输出

您需要使用
su
运行
dhcpcd
,通常如下所示:

exec("su -c dhcpcd eth0")

我们可以使用这样的运行时类来执行shell命令

Runtime.getRuntime().exec("ls");
上面的代码将为给定的命令ls创建一个本机进程,并将返回与进程对象相同的进程


有关它的更多详细信息

这对问题中已经存在的内容没有任何补充,完全忽略了问题。当我输入terminal时,它可以工作,我可以看到结果。nativeProcess=Runtime.getRuntime().exec(“su-c dhcpcd eth0”);InputStream=nativeProcess.getInputStream();InputStreamReader isr=新的InputStreamReader(is);BufferedReader br=新的BufferedReader(isr);StringBuilder内容=新建StringBuilder();虽然((line=br.readLine())!=null){contents.append(line+“\n”);}我仍然得到null@nneoneo-实际上,问题是当我执行该命令时,我得到的输出是“fork to background,child pid type”的形式。你们知道吗,我想它是在后台运行的,并连接到子进程。因此,要捕获命令“su-cdhcpcdeth0”的响应,应该有另一种方法。如果你知道,请分享你的信息,看看这个