2011-11-15 23 views
1

次の質問があります:Android:JNIコールからシェルコマンドを呼び出す

JavaソースからAndroidのネイティブバイナリ(私の場合はPING)を呼び出したいと思います。 これは、新しいプロセスを作成し、そのOutputStreamをリッスンすることで可能ですが、JNIを使​​用することができないのではないかと思います。

Javaから呼び出せるメソッドを提供するJNIPINGという新しいバイナリを作成することを考えました。このメソッドは、PINGバイナリをexecして、その出力を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にそれを送り返すために得ることができますか?

答えて

0

ProcessおよびRuntimeクラスを使用してこれを行うことができます(questionを参照)。

別の可能性としては、このquestion

は、しかし、両方の方法は、Androidの下でのping場合に失敗するように見える参照、InetAddress.isReachableを使用する必要があります。

関連する問題