Android: вызов команды оболочки из вызова JNI - PullRequest
1 голос
/ 15 ноября 2011

У меня следующий вопрос:

Я хотел бы вызвать собственный двоичный файл 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?

1 Ответ

0 голосов
/ 16 ноября 2011

Вы можете использовать класс Process и Runtime , чтобы сделать это, см. Этот вопрос .

Другая возможность должна заключаться в использовании InetAddress.isReachable, см. вопрос

Тем не менее, оба метода, похоже, не работают в случае ping под Android.

...