Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.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中通过exec函数运行Ping_Java_Android_Ping_Netcat - Fatal编程技术网

Java 在Android中通过exec函数运行Ping

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不工作吗?一旦我修复了那个部分,我就可以

我想让netcat的ARM二进制文件在我的机器人上运行。它已包含在设备上的data/local/tmp文件夹中。netcat命令也通过adb shell工作

然而,我试图从代码中执行命令,netcat不起作用,所以我决定从一个基本命令开始,比如ping。我下面的代码是试图从手机ping我的笔记本电脑

同样,这在adb shell中起作用,但在代码中似乎不起作用。我在wireshark中捕获到,当代码运行时,手机没有收到任何数据包

有人能告诉我为什么ping不工作吗?一旦我修复了那个部分,我就可以使用其他命令了

此外,我还尝试了.waitFor命令来等待命令运行,但这在eclipse中给出了一个错误

谢谢

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框架保留删除其发现的任何此类可执行文件的权利。实际上,它现在还不能做到这一点。

我已经在网上学习了很多这方面的教程,但对我来说似乎根本不起作用。如果有人有任何建议,我将非常感谢。我已经在网上学习了很多教程,但它似乎对我不起作用。如果有人有任何建议,我将不胜感激。