Android:从JNI调用调用shell命令

时间:2011-11-15 18:39:59

标签: java android c java-native-interface android-ndk

我有以下问题:

我想从Java源代码调用Android本机二进制文件(在我的情况下是PING)。 所以我知道这可以通过创建一个新进程并监听其OutputStream来实现 - 但我想知道是否有可能不能使用JNI。

我考虑过创建一个名为JNIPING的新二进制文件,它提供了一个可以从java调用的方法。此方法可以执行PING二进制文件并将其输出返回给JNI调用者...

所以对我来说这听起来很有可能 - 但我的C很差,所以我想问你是否有人可以告诉我怎么做 - 或者如果不可能,所以我不需要花很多时间......

非常感谢您的回复!

PS:我在JNIPING中试过类似的东西:

#include<stdio.h>
#include<stdlib.h>
int main() {
    char str[256], buf[256];
    printf("myshell-> ");
    scanf("%s", str);
    sprintf(buf, "ping www.google.de\n", str);
    system(buf);
    return 0;
}

那么如何从二进制文件中获取输出以将其发送回java?

1 个答案:

答案 0 :(得分:0)

您可以使用ProcessRuntime类来执行此操作,请参阅此question

另一种可能性是使用InetAddress.isReachable,请参阅此question

但是,这两种方法在Android下的ping案例中似乎都失败了。