Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.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
Java 在android终端上运行Runtime.exec()和运行shell命令有什么区别_Java_Android_Shell_Terminal_Sh - Fatal编程技术网

Java 在android终端上运行Runtime.exec()和运行shell命令有什么区别

Java 在android终端上运行Runtime.exec()和运行shell命令有什么区别,java,android,shell,terminal,sh,Java,Android,Shell,Terminal,Sh,我的摩托罗拉G6是根,我有一个应用程序,应该写到根文件之间的主机模式和设备模式切换。档案如下: /系统/等级/电源/usb/usb\U otg 在android终端模拟器中,我键入以下命令: $ su # echo 3 > /sys/class/power_supply/usb/usb_otg 这些命令将使手机进入主机模式。我之所以知道这一点,是因为手机与分光计相连,当我执行此命令时,手机会通电 测试这些命令后,我将以下代码放入我的应用程序中: toastMessage("A

我的摩托罗拉G6是根,我有一个应用程序,应该写到根文件之间的主机模式和设备模式切换。档案如下:

/系统/等级/电源/usb/usb\U otg

在android终端模拟器中,我键入以下命令:

$    su
#    echo 3 > /sys/class/power_supply/usb/usb_otg
这些命令将使手机进入主机模式。我之所以知道这一点,是因为手机与分光计相连,当我执行此命令时,手机会通电

测试这些命令后,我将以下代码放入我的应用程序中:

toastMessage("Attempting to power up spectrometer");
Runtime.getRuntime().exec("su");
Runtime.getRuntime().exec("echo 3 > /sys/class/power_supply/usb/usb_otg");
toastMessage("Reached this point");
这段代码似乎没有任何错误,它一直运行到最后,但没有为光谱仪供电


我的问题是,为什么这些命令在Android终端模拟器中工作,而不是通过Runtime.exec()工作?

您需要使用这些代码

    toastMessage("Attempting to power up spectrometer");
    Runtime.getRuntime().exec("su -c \"\"echo 3 > /sys/class/power_supply/usb/usb_otg");
    toastMessage("Reached this point");
您需要在一个代码中执行su和其他代码。
第二次执行运行时代码时,它将在没有su权限的情况下执行。

谢谢,我很快会尝试,但因为我发布了这个问题,所以我在某个地方读到,Runtime.exec()以一种非常不直观的方式处理空白,这将解释为什么我的代码不起作用,你知道情况是否如此吗,如果是这样的话,你的代码还能工作吗?我的代码工作得很好(我在我的应用程序中使用它),你需要这样使用它:su“echo something”,但这个“是特殊字符,所以你需要与\”一起使用。这很好,现在似乎对我的代码也工作得很好。谢谢你,帕维尔。