java - Android:从 JNI 调用调用 shell 命令

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

我有以下问题:

我想从 Java 源调用 Android native 二进制文件(在我的例子中是 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?

最佳答案

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

另一种可能性应该是使用 InetAddress.isReachable,请参见 question

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

关于java - Android:从 JNI 调用调用 shell 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8141367/

相关文章:

java - 改变数组元素的顺序

java - 使用 Protocol Buffer 序列化日期

java - Android Canvas (onDraw)

java - 从我所有的 Controller 访问一个变量

android - 移动应用程序安装量和每日活跃用户数 (DAU) 之间的差异

c - C 链接器何时以及为何会排除未使用的符号?

android - 在后台线程中播放音频(当屏幕关闭时)Cordova 插件

android - LibGDX : Deploying to iOS device : ApplicationVerificationFailed

c - 格式参数太多。 C eclipse

c# - 有哪些适合 C#/Java 开发人员学习 native C/C++ 的好资源(最好是免费的)?