2011-01-20 195 views

回答

0
+0

其實我已經試過這個代碼了。但我認爲WifiManager不適用於Android模擬器。它給了我錯誤。它會給出一個主機的IP地址。我想要網絡中的所有計算機 – Bhagya 2011-01-20 17:45:27

+0

此處的代碼在Emulator上也適用於我 - > http://www.droidnova.com/get-the-ip-address- 304.html – HT03 2011-01-20 19:34:02

2

可以共享logcat的,我懷疑可能有一些其他issue.Try該代碼(這是)在一個示例應用程序只檢查的Wi-Fi IP地址正在

WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); 
WifiInfo wifiInfo = wifiManager.getConnectionInfo(); 

int ipAddress = wifiInfo.getIpAddress(); 

String ip = null; 

ip = String.format("%d.%d.%d.%d", 
(ipAddress & 0xff), 
(ipAddress >> 8 & 0xff), 
(ipAddress >> 16 & 0xff), 
(ipAddress >> 24 & 0xff)) 
1

正如另一個主題所述,android模擬器工作在虛擬專用網絡上。

這意味着模擬器與您的計算機不在同一個網絡上,而是在虛擬網絡上。沒有仿真器可以看到其他設備,也沒有其他仿真器,也沒有其他設備可以看到仿真器。

除此之外,我有一個問題:

我怎樣才能使用WifiManager一個主機的IP地址?

例如,我的電腦與我的android手機(不是仿真器)在同一個局域網上,並且它有一個像User-PC這樣的主機名。當我嘗試使用InetAddress.getByName(「User-PC」)獲取IP時;在一個Java應用程序中,我得到了像192.168.1.100那樣的局域網IP,但是當我在電話上嘗試時,它不起作用。奇怪的是,如果我知道IP,我可以建立連接,但似乎無法解決它主機名。

任何想法?

1

如果你想檢測連接到任何網絡的「模擬器」或Android設備的IP地址,然後在你的程序中使用此代碼。它會爲您提供網絡分配給您設備的確切IP地址。

try { 
      for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) 
       { 
        NetworkInterface intf = en.nextElement();  
        for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses();enumIpAddr.hasMoreElements();) 
         { 
         InetAddress inetAddress = enumIpAddr.nextElement(); 
         if (!inetAddress.isLoopbackAddress()) 
         { 
           String Ip= inetAddress.getHostAddress().toString(); 
           //Now use this Ip Address... 
         } 
         } 
        } 

      } 
    catch (SocketException obj) 
    { 
     Log.e("Error occurred during IP fetching: ", obj.toString()); 
     }