2013-07-10 2 views
3

jMdns - отличная библиотека java для предоставления возможностей для вашего приложения Android. zeroconf/bonjour.jmdns.jar не работает на android 4.0 или новее

Я успешно использовал это в проекте до Android 4.0 Ice Cream Sandwich aka ICS, после того, как устройства Android 4.0 стали использоваться чаще, я сталкиваюсь с тем, что приложение не работает.

Я тестировал приложение в android 4.0 раньше, он показывает мне список Обнаружение устройств, но в android 4.0 или новее он ничего не показывает.

Я протестировал эту демонстрационную версию «https://github.com/twitwi/AndroidDnssdDemo» на 4.1, но не работал.

я написал ниже код на основе внушения упоминания в "http://snctln.com/2012/08/03/jmdns-and-android-4-0/"

private android.net.wifi.WifiManager.MulticastLock lock; 
private android.os.Handler handler = new android.os.Handler(); 
private JmDNS jmdns = null; 
public WifiManager wifi; 


private void setUp() 
    { 

     WifiManager wifiMgr = (WifiManager) getSystemService(WIFI_SERVICE); 
     WifiInfo wifiInfo = wifiMgr.getConnectionInfo(); 
     int ip = wifiInfo.getIpAddress(); 
     String ipAddress = Formatter.formatIpAddress(ip); 




     try { 


      jmdns.create(_bindingAddress); 
      ServiceInfo[] infos = jmdns.list("_afpovertcp._tcp.local."); 
      for (int i=0; i < infos.length; i++) { 
       Log.i("Servic : ",infos[i].getName()+""); 
//    notifyUser("\nServic : "+infos[i].getName()+""); 

      } 



     } catch (IOException e) { 
      e.printStackTrace(); 
     } 


    } 

ваше предложение ощутимы

ответ

0

Моя простая бы предположить, что он пытается загрузить данные в главном потоке. Это невозможно с Ice Cream Sandwich и вперед. Попробуйте взглянуть на logcat, пока он работает на телефоне, он должен четко показать сообщение об ошибке/ошибке, если это так.

0

Вы можете позволить ему работать через основной поток ала

 if (android.os.Build.VERSION.SDK_INT > 9) { 
     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 
    } 
Смежные вопросы