我正在尝试使用“网络服务发现”接口访问安卓应用程序中的mDNS TXT记录。基本上,我的应用程序需要发现服务并访问它们的TXT记录。
如何通过安卓网络服务发现API访问mDNS TXT记录。支持从网络服务发现API访问TXT记录。
发布于 2014-11-05 06:26:48
对访问TXT记录的支持只是在API21级(Android5.0)中通过getAttributes() method on NsdServiceInfo添加的。
如果你需要支持老版本的安卓系统,不幸的是你需要使用像jmDNS这样的库来访问TXT记录。
发布于 2016-02-08 19:32:50
正如在注释中提到的,NsdServiceInfo.getAttributes()方法是访问TXT记录,但是a bug意味着getAttributes()结果为空。这使得网络服务发现API在您需要TXT记录时毫无用处。
我希望谷歌能解决这个问题,因为与jmDNS相比,使用NsdManager查找服务的速度似乎要快得多。同时,如果有帮助,我已经开发了一个变通方法,当NsdManager通知新服务时,可以通过网络手动获取TXT记录。这是麻省理工学院许可下的open sourced as a library。
发布于 2017-06-14 20:46:21
我的同事发现了一个很棒的库来绕过这个bug,它使用了真正的Apple DNSSD Java API:
BonjourBrowser是一个很棒的示例应用程序,它使用了Android上的所有功能。它对于创建您自己的用于测试目的的mDNS服务也非常有用。
我尝试了Steve Lilly在下面提到的TinyDNSSD,但它对我来说是不可用的,因为当你的服务没有所有记录时,它就不能工作。当f.e.A记录丢失,它不工作(TimeOutException)。
https://stackoverflow.com/questions/25984894
复制相似问题