2014-09-23 66 views
3

我正嘗試使用「網絡服務發現」API訪問android應用程序中的mDNS TXT記錄。基本上我的應用程序需要發現服務並從他們那裏訪問TXT記錄。Android mDNS TXT記錄

如何從android網絡服務發現API訪問mDNS TXT記錄。在那裏支持從網絡服務發現API訪問TXT記錄。

回答

2

僅通過getAttributes() method on NsdServiceInfo僅在API Level 21(Android 5.0)中添加了對訪問TXT記錄的支持。

如果您需要支持較舊的Android版本,您不幸需要使用類似jmDNS這樣的庫來訪問TXT記錄。

+2

GetAttributes()仍然不適用於API 21:https://code.google.com/p/android/issues/detail?id=35810 – 2015-01-08 13:54:50

2

正如在評論中提到的,NsdServiceInfo.getAttributes()方法是訪問TXT記錄,但a bug意味着getAttributes()結果爲空。這使網絡服務發現API無用,如果你需要TXT記錄。

我希望Google能夠解決這個問題,因爲使用NsdManager與例如jmDNS在尋找服務方面似乎要快得多。同時,如果有幫助,我已經開發了一種解決方法,當NsdManager通知新服務時,通過網絡手動獲取TXT記錄。根據MIT許可證,這已經是open sourced as a library

0

我collegae發現了一個偉大的圖書館繞過這個錯誤,它使用真正的蘋果DNSSD的Java API:

RxDNSSD

​​是使用Android上的所有功能,一個偉大的示例應用程序。爲測試目的創建您自己的mDNS服務也很好。

我試過Steve Lilly提到的TinyDNSSD,但那對我沒有用,因爲當你的服務沒有所有的記錄時它不起作用。當f.e. A記錄丟失它不起作用(TimeOutException)。