2011-11-15 63 views
1

調用shell命令我有以下問題:安卓:從JNI調用

我想調用Android原生二進制(在我的情況PING)從Java源代碼。 所以我知道這是可能的創建一個新的進程,並監聽它的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嗎?

回答

0

您可以使用ProcessRuntime類來完成此操作,請參閱question

另一種可能性應該是使用InetAddress.isReachable,看到這個question

然而,這兩種方法似乎Android的下平的情況下失敗。