JmDNS не работает должным образом на Android 4.1

JmDNS

Я реализую JmDNS следующим образом здесь. При запуске кода на моем Android 2.3.5 htc Evo я могу обнаружить свой компьютер с Linux. Однако, когда я запускаю тот же код на своем Samsung Galaxy S3 (4.1.0), ничего не появляется. Странно то, что неделю назад у меня на 4.1 работало, а сейчас нет. Я попробовал чужое решение здесь, но безуспешно . Если кто-то испытал это и может пролить свет на то, почему имбирный пряник работает с jmdns, а не с jellybean.

Пояснение:

Мое устройство Android 4.1 не будет разрешать никакие службы, кроме тех, которые созданы на устройстве. Мое устройство 2.3 будет разрешать службы, кроме тех, которые созданы на устройстве 4.1. может быть ip6 на ip4?


person skukx    schedule 03.12.2012    source источник


Ответы (2)


Решено:

Я частично последовал совету здесь, но вместо создания (String hostName) Я создал (адрес InetAddress).

String ip = Formatter.formatIpAddress(wifiManager.getConnectionInfo().getIpAddress());
_bindingAddress = InetAddress.getByName(ip);
_jmdns.create(_bindingAddress);
person skukx    schedule 03.12.2012
comment
Спасибо за то, что поделились решением. - person RaphMclee; 05.12.2012
comment
Похоже, JmDNS.create(); больше не работает на всех версиях платформы выше Android 4.1.2. Это решение работает как на Android 4.3, так и на 4.4.2. - person yorkw; 05.02.2014
comment
Formatter.formatIpAddress показался мне устаревшим, но приведенное ниже решение сработало. - person Dave; 05.06.2014

Я почти уверен, что следующий код работает на моем телефоне (Android 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);
person RRTW    schedule 22.01.2013