2012-12-03 17 views
4

JmDNSJmDNS不正確的Andr oid 4.1

我實現JmDNS如下here工作。在我的android 2.3.5 htc Evo上運行代碼時,我能夠發現我的linux電腦。但是,當我在我的三星Galaxy S3(4.1.0)上運行相同的代碼時,什麼也沒有顯示出來。奇怪的是,它一週前在4.1上工作,現在不是。我試過別人的解決方案here但沒有運氣。如果有任何人經歷過這一點,並可以闡明爲什麼薑餅正在與jmdns,但不是糖果。

澄清:

我的Android 4.1設備不會解決,除了那些從設備創建的任何服務。我的2.3設備將解析除4.1設備創建的設備之外的服務。它可以是IP6到IP4?

回答

9

解決:

我部分遵循建議here但不是創建(字符串主機名)我沒有創建(InetAddress類地址)。

String ip = Formatter.formatIpAddress(wifiManager.getConnectionInfo().getIpAddress()); 
_bindingAddress = InetAddress.getByName(ip); 
_jmdns.create(_bindingAddress); 
+0

THX共享解決方案。 – RaphMclee

+1

看起來像'JmDNS.create();'在Android 4.1.2以上的所有平臺版本上都不再工作,該解決方案同時適用於Android 4.3和4.4.2。 – yorkw

+0

Formatter.formatIpAddress顯示爲我棄用,但下面的解決方案工作。 – Dave

4

我敢肯定,下面的代碼工作我的手機(安卓4.1)上,供其他人蔘考〜

WifiManager wifi=(WifiManager)getSystemService(android.content.Context.WIFI_SERVICE); 

WifiInfo wifiinfo = wifi.getConnectionInfo(); 
int intaddr = wifiinfo.getIpAddress(); 

byte[] byteaddr = new byte[] { (byte) (intaddr & 0xff), (byte) (intaddr >> 8 & 0xff), (byte) (intaddr >> 16 & 0xff), (byte) (intaddr >> 24 & 0xff) }; 
InetAddress addr=InetAddress.getByAddress(byteaddr); //Need to process UnknownHostException 

jmdns=JmDNS.create(addr);