2012-05-11 3 views
0

есть ли способ запустить команду arp.Android Runtime.exec ("arp") не работает

Мои попытки:

Runtime rt = Runtime.getRuntime(); 
proc = rt 
  1. .exec("arp") -> получил IOException
  2. .exec("/proc/net/arp") -> получил IOException а (узнал через ADB оболочки, что /proc/net/arp существует)

Также был использован раствор оболочки:

String sPrefix="/system/bin/sh -c 'proc/net/arp;"; 
String sPostfix="'"; 
Runtime rt = Runtime.getRuntime(); 

proc = rt.exec(sPrefix+sPostfix); // sh -c 'cd someplace; echo do something' 
InputStreamReader reader = new InputStreamReader(proc.getInputStream()); 
BufferedReader buffer = new BufferedReader(reader); 
String line = ""; 
while ((line = buffer.readLine()) != null) { 
    echo.append(line + "\n"); 
}   

, но не получил возвращаемого значения.

У кого-нибудь есть идея: - /?

ответ

2

/proc/net/arp не является командой, это таблица ARP. Это текстовый файл, который вы можете прочитать:

StringBuffer echo = new StringBuffer(); 
    try { 
    BufferedReader br = new BufferedReader(new FileReader("/proc/net/arp")); 
    String line = ""; 
    while((line = br.readLine()) != null) echo.append(line + "\n"); 
    br.close(); 
    } 
    catch(Exception e) { Log.e(TAG, e.toString()); } 

Сама таблица имеет формат:

IP address  HW type Flags  HW address   Mask Device 
192.168.178.21 0x1  0x2  00:1a:2b:3c:4d:5e *  tiwlan0 
192.168.178.34 0x1  0x2  1a:2b:3c:4d:5e:6f *  tiwlan1 
... 
+0

К сожалению, это, кажется, более новые версии Android (я думаю 4.0+) Не держать эту информацию больше. Таблицы пусты. –

Смежные вопросы