Java android应用程序中不带root的ifconfig设置
我有一个Android板,我使用rndis模块通过USB将该板连接到手机 要设置板的ip,我需要使用以下命令 minicom中的ifconfig usb0 x.x.x.x,并在每次重新插入USB时重置ip 因此,我想在我的应用程序中为ip自动设置编写一个代码。 一旦应用程序启动,将设置板的ip,应用程序随后可以执行其他工作 经过一些研究,ip设置的目标通过以下代码实现:Java android应用程序中不带root的ifconfig设置,java,android,linux,ip,Java,Android,Linux,Ip,我有一个Android板,我使用rndis模块通过USB将该板连接到手机 要设置板的ip,我需要使用以下命令 minicom中的ifconfig usb0 x.x.x.x,并在每次重新插入USB时重置ip 因此,我想在我的应用程序中为ip自动设置编写一个代码。 一旦应用程序启动,将设置板的ip,应用程序随后可以执行其他工作 经过一些研究,ip设置的目标通过以下代码实现: public void ifconfigUsb0IP(String strIP){ Process
public void ifconfigUsb0IP(String strIP){
Process process = null;
DataOutputStream os = null;
try {
process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());
os.writeBytes("ifconfig usb0 "+strIP+"\n");
os.flush();
} catch (Exception e) {
e.getMessage();
}
}
但我不希望应用程序具有root权限。
因此,我将/system/bin中的ifconfig文件
系统系统rwxrwxrwx
然后将代码修改为以下形式:
public void ifconfigUsb0IP(String strIP){
Process process = null;
DataOutputStream os = null;
try {
process = Runtime.getRuntime().exec("ifconfig usb0 "+strIP);
} catch (Exception e) {
e.getMessage();
}
}
但是ip设置不再起作用了
我尝试了一些方法来编写Runtime.getRuntime().exec
命令,但是没有一种方法可以工作
我不知道这是否是语法错误,或者更改ifconfig的权限只是一个错误的想法?您现在可以访问
ifconfig
工具,但它是使用您的应用权限执行的,这可能不足以完成它需要做的事。谢谢您的回答!但我不太明白。你能给我解释更多细节吗?谢谢:)请将ifconfig
视为执行其他命令的脚本。如果你执行它,基本上是你执行所有这些命令。如果其中一个命令需要root访问ifconfig
,则整个命令将失败。对流程的输出和错误流进行评估,如中所示,并查看它是否向您显示了它不工作的原因。我编写类似这样的内容来检查:process=Runtime.getRuntime().exec(“su”)代码>process=Runtime.getRuntime().exec(“ifconfig usb0”+strIP)代码>仍然无法工作。所以这似乎不是特权问题?这不起作用,因为第二个进程是一个单独的进程,不在su
上下文中运行。而且su
不是永久许可。这个过程是理所当然的。