2014-09-22 3 views
1

Я применяю XML-анализатор для использования XML-файла по этому URL-адресу: http://www.emmebistudio.com/markers.xml, чтобы сохранить данные маркеров для карты в приложении Android. Это мой код, который должен его разобрать, но с отладчиком eclipse я видел, что он возвращает connected = false во второй строке, так, где я ошибаюсь?Почему мой XML-анализатор не открывает соединение?

try{ 
    URL url = new URL("http://www.emmebistudio.com/markers.xml"); 
    URLConnection conn = url.openConnection(); 

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder builder = factory.newDocumentBuilder(); 
    Document doc = builder.parse(new InputSource(url.openStream())); 
    doc.getDocumentElement().normalize(); 
    //Document doc = builder.parse(conn.getInputStream()); 

    NodeList markers = doc.getElementsByTagName("marker"); 

    for (int i = 0; i < markers.getLength(); i++) { 
     Element item = (Element) markers.item(i); 
     String name = item.getAttribute("name"); 
     String address = item.getAttribute("address"); 
     String stringLat = item.getAttribute("lat"); 
     String stringLong = item.getAttribute("long"); 
     String icon = item.getAttribute("icon"); //assigned variable for the XML icon attribute 
     Double lat = Double.valueOf(stringLat); 
     Double lon = Double.valueOf(stringLong); 

     map = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); 
     map.setMyLocationEnabled(true); 

     map.addMarker(new MarkerOptions() 
       .position(new LatLng(lat, lon)) 
       .title(name) 
       .snippet(address)); 

    } 


}catch (Exception e){ 
    // If I can't connect to the file I only see the map with my position 
    map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); 
    map.setMyLocationEnabled(true); 

    e.printStackTrace(); 
} 
+0

бежит, что фрагмент кода на UI тему? – Blackbelt

+0

да, это только для того, чтобы попробовать .. если он будет работать гладко, я сделаю класс java –

+2

Это на самом деле проблема. Вероятно, вы получаете NetworOnMainThreadException, но поскольку вы не печатаете стоп-трассу, трудно точно сказать, что происходит – Blackbelt

ответ

0

Возможно, вам потребуется добавить доступ в Интернет.

Добавить разрешение INTERNET в файл манифеста.

Вы должны добавить следующую строку:

<uses-permission android:name="android.permission.INTERNET" /> 

вне тега приложения в вашем AndroidManifest.xml

+0

Вам не разрешен доступ в Интернет из основного потока. – RichieHH

+0

У меня уже есть это разрешение. @RichieHH –