2015-04-01 52 views
7

我正在啓動圈養模式使用此代碼:獲取非連接的設備,當我的設備是圈養模式

private void setWifiTetheringEnabled(boolean enable) { 
    WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); 

    Method[] methods = wifiManager.getClass().getDeclaredMethods(); 
    for (Method method : methods) { 
     Log.e("teste", method.getName()); 
     if (method.getName().equals("setWifiApEnabled")) { 
      try { 
       method.invoke(wifiManager, null, enable); 
      } catch (Exception ex) { 
      } 
      break; 
     } 
    } 
} 

和我得到使用設備連接代碼(和讀取信息)

br = new BufferedReader(new FileReader("/proc/net/arp")); 

但在這個文件(/ proc/net/arp)只有連接的設備,我想獲得一些設備的信息(Mac地址),只是在共享模式下掃描我的手機。

執行ntcfg我回:

04-10 10:32:27.908: E/test(18908): dummy0 DOWN         0.0.0.0/0 0x00000082 xx:xx:b6:69:37:4e 
04-10 10:32:27.908: E/test(18908): wlan0 UP        192.168.43.1/24 0x00001043 xx:xx:11:f9:a9:45 
04-10 10:32:27.908: E/test(18908): rmnet_usb0 UP        100.107.189.66/30 0x00000041 00:00:00:00:00:00 
04-10 10:32:27.908: E/test(18908): rmnet_usb1 DOWN         0.0.0.0/0 0x00000000 00:00:00:00:00:00 
04-10 10:32:27.908: E/test(18908): rmnet_usb2 DOWN         0.0.0.0/0 0x00000000 00:00:00:00:00:00 
04-10 10:32:27.908: E/test(18908): rmnet_usb3 DOWN         0.0.0.0/0 0x00000000 00:00:00:00:00:00 
04-10 10:32:27.908: E/test(18908): lo  UP         127.0.0.1/8 0x00000049 00:00:00:00:00:00 
04-10 10:32:27.908: E/test(18908): sit0  DOWN         0.0.0.0/0 0x00000080 00:00:00:00:00:00 
04-10 10:32:27.908: E/test(18908): rmnet_smux0 DOWN         0.0.0.0/0 0x00001002 xx:6f:06:64:e2:61 
04-10 10:32:27.908: E/test(18908): rmnet0 DOWN         0.0.0.0/0 0x00001002 xx:xx:a4:fe:a4:e5 
04-10 10:32:27.908: E/test(18908): rmnet1 DOWN         0.0.0.0/0 0x00001002 xx:x:68:34:70:29 
04-10 10:32:27.908: E/test(18908): rmnet2 DOWN         0.0.0.0/0 0x00001002 xx:xx:ac:a5:b3:a1 
04-10 10:32:27.908: E/test(18908): rmnet3 DOWN         0.0.0.0/0 0x00001002 xx:xx:1b:af:02:fe 
04-10 10:32:27.908: E/test(18908): rmnet4 DOWN         0.0.0.0/0 0x00001002 xx:xx:32:79:22:e7 
04-10 10:32:27.908: E/test(18908): rmnet5 DOWN         0.0.0.0/0 0x00001002 xx:xx:9b:4c:93:c5 
04-10 10:32:27.908: E/test(18908): rmnet6 DOWN         0.0.0.0/0 0x00001002 xx:xx:1a:1e:86:e8 
04-10 10:32:27.908: E/test(18908): rmnet7 DOWN         0.0.0.0/0 0x00001002 xx:xx:46:f0:c5:48 
04-10 10:32:27.908: E/test(18908): rev_rmnet2 DOWN         0.0.0.0/0 0x00001002 xx:xx:98:22:6f:fb 
04-10 10:32:27.908: E/test(18908): rev_rmnet3 DOWN         0.0.0.0/0 0x00001002 xx:xx:8d:bf:3e:50 
04-10 10:32:27.908: E/test(18908): rev_rmnet4 DOWN         0.0.0.0/0 0x00001002 xx:xx:f4:c0:81:ae 
04-10 10:32:27.908: E/test(18908): rev_rmnet5 DOWN         0.0.0.0/0 0x00001002 xx:xx:29:94:d5:e5 
04-10 10:32:27.908: E/test(18908): rev_rmnet6 DOWN         0.0.0.0/0 0x00001002 xx:xx:41:39:44:db 
04-10 10:32:27.908: E/test(18908): rev_rmnet7 DOWN         0.0.0.0/0 0x00001002 xx:xx:4b:0b:13:18 
04-10 10:32:27.908: E/test(18908): rev_rmnet8 DOWN         0.0.0.0/0 0x00001002 xx:xx:64:4f:b4:f6 
04-10 10:32:27.908: E/test(18908): rev_rmnet0 DOWN         0.0.0.0/0 0x00001002 xx:xx:f4:d2:ae:66 
04-10 10:32:27.908: E/test(18908): rev_rmnet1 DOWN         0.0.0.0/0 0x00001002 xx:xx:8d:f0:64:2a 
+0

我仍然需要幫助... – rcorbellini 2015-04-09 18:33:22

+0

掃描是一種被動的操作。掃描設備不會向掃描的AP發送任何數據包,因此掃描的AP不知道設備。 – StenSoft 2015-04-10 12:34:23

+0

如果Android的tethering工作像一個路由器的WiFi,它不是一個真實的,因爲在我的路由器我可以得到掃描的MAC地址。它握手。 – rcorbellini 2015-04-10 13:01:05

回答

-1

呼叫exec("netcfg");


/** 
* Execute a command in a shell 
* 
* @param command 
*   command to execute 
* @return the return of the command 
*/ 
public String exec(String command) { 
    String retour = ""; 
    try { 
     Runtime runtime = Runtime.getRuntime(); 

     Process p = runtime.exec(command); 

     java.io.BufferedReader standardIn = new java.io.BufferedReader(
       new java.io.InputStreamReader(p.getInputStream())); 
     java.io.BufferedReader errorIn = new java.io.BufferedReader(
       new java.io.InputStreamReader(p.getErrorStream())); 
     String line = ""; 
     while ((line = standardIn.readLine()) != null) { 
      retour += line + "\n"; 
     } 
     while ((line = errorIn.readLine()) != null) { 
      retour += line + "\n"; 
     } 
    } catch (java.io.IOException e) { 
     e.printStackTrace(); 
    } 

    return retour; 
} 

它將在殼執行 「netcfg中」 命令&產生象下面

lo  UP   127.0.0.1/8 0x00000049 00:00:00:00:00:00 

sit0  DOWN   0.0.0.0/0  0x00000080 00:00:00:00:00:00 

eth0  UP   0.0.0.0/0  0x00001003 78:c5:e5:a2:b2:d0 

wlan0 DOWN   0.0.0.0/0  0x00001002 64:70:02:20:79:31 

包括連接network interfaces , status , IP obtained & MAC address輸出。

最後一個字段是MAC地址。你必須從這個單一的字符串解析MAC地址。

+0

你能解釋一個更多的字符串返回嗎?我認爲這可以是我的答案... 回報有很多信息,哪一個我可以考慮一個有效的設備掃描? – rcorbellini 2015-04-10 12:58:14

+0

我得到了很多東西......我沒有根訪問權限,在你的情況下,你能否考慮你有4個設備掃描,其中2個是連接?它是? – rcorbellini 2015-04-10 13:27:19

+0

在馬上他們都沒有connected.Could你請顯示輸出? – 2015-04-10 13:28:16