Java 在Android中通过exec函数运行Ping
我想让netcat的ARM二进制文件在我的机器人上运行。它已包含在设备上的data/local/tmp文件夹中。netcat命令也通过adb shell工作 然而,我试图从代码中执行命令,netcat不起作用,所以我决定从一个基本命令开始,比如ping。我下面的代码是试图从手机ping我的笔记本电脑 同样,这在adb shell中起作用,但在代码中似乎不起作用。我在wireshark中捕获到,当代码运行时,手机没有收到任何数据包 有人能告诉我为什么ping不工作吗?一旦我修复了那个部分,我就可以使用其他命令了 此外,我还尝试了.waitFor命令来等待命令运行,但这在eclipse中给出了一个错误 谢谢Java 在Android中通过exec函数运行Ping,java,android,ping,netcat,Java,Android,Ping,Netcat,我想让netcat的ARM二进制文件在我的机器人上运行。它已包含在设备上的data/local/tmp文件夹中。netcat命令也通过adb shell工作 然而,我试图从代码中执行命令,netcat不起作用,所以我决定从一个基本命令开始,比如ping。我下面的代码是试图从手机ping我的笔记本电脑 同样,这在adb shell中起作用,但在代码中似乎不起作用。我在wireshark中捕获到,当代码运行时,手机没有收到任何数据包 有人能告诉我为什么ping不工作吗?一旦我修复了那个部分,我就可以
package com.maurice.netcat;
import java.io.IOException;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
public class NetcatActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView text = new TextView(this);
text.setText("Netcat");
setContentView(text);
try
{
String ping = "system/bin/ping -c 1 192.168.0.13";
Runtime.getRuntime().exec(ping);
Toast.makeText(getApplicationContext(), "In Netcat Section", Toast.LENGTH_SHORT).show();
}
catch(IOException e) {
System.out.println("Error Executing Netcat");
Toast.makeText(getApplicationContext(), "In Exception Section", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
}
首先,您的意思是
/system/bin/ping
而不是system/bin/ping
。这可能就是问题的原因
其次,您需要确保您的应用程序进程具有ping所需的所有权限,因为这些权限由您启动的任何可执行文件继承。因此,您肯定需要android.permission.INTERNET
,而且ping
可能需要一些其他较低级别的权限才能发送所需的ICMP数据包(我不确定)
确保应用程序具有正确权限的有用提示:从adb
shell以com.myapplication.packagename.here ping-c 1 192.168.0.13的身份运行。这将使用与应用程序相同的安全上下文运行ping命令,因此您将看到是否存在权限问题
最后,一般不赞成启动外部可执行文件,从理论上讲,Android框架保留删除其发现的任何此类可执行文件的权利。实际上,它现在不这样做。首先,你的意思是
/system/bin/ping
而不是system/bin/ping
。这可能就是问题的原因
其次,您需要确保您的应用程序进程具有ping所需的所有权限,因为这些权限由您启动的任何可执行文件继承。因此,您肯定需要android.permission.INTERNET
,而且ping
可能需要一些其他较低级别的权限才能发送所需的ICMP数据包(我不确定)
确保应用程序具有正确权限的有用提示:从adb
shell以com.myapplication.packagename.here ping-c 1 192.168.0.13的身份运行。这将使用与应用程序相同的安全上下文运行ping命令,因此您将看到是否存在权限问题
最后,一般不赞成启动外部可执行文件,从理论上讲,Android框架保留删除其发现的任何此类可执行文件的权利。实际上,它现在还不能做到这一点。我已经在网上学习了很多这方面的教程,但对我来说似乎根本不起作用。如果有人有任何建议,我将非常感谢。我已经在网上学习了很多教程,但它似乎对我不起作用。如果有人有任何建议,我将不胜感激。