Это исключение возникает, когда приложение пытается выполнить сетевую операцию в своем основном потоке. Запустите свой код в AsyncTask
:
class RetrieveFeedTask extends AsyncTask {
private Exception exception;
protected RSSFeed doInBackground(String... urls) {
try {
URL url = new URL(urls[0]);
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
XMLReader xmlreader = parser.getXMLReader();
RssHandler theRSSHandler = new RssHandler();
xmlreader.setContentHandler(theRSSHandler);
InputSource is = new InputSource(url.openStream());
xmlreader.parse(is);
return theRSSHandler.getFeed();
} catch (Exception e) {
this.exception = e;
return null;
} finally {
is.close();
}
}
protected void onPostExecute(RSSFeed feed) {
// TODO: check this.exception
// TODO: do something with the feed
}
}
Как выполнить задачу:
В файле MainActivity.java
вы можете добавить эту строку в свой oncreate()
method
new RetrieveFeedTask().execute(urlToRssFeed);
Не забудьте добавить это в файл AndroidManifest.xml
:
Вам не хватает разделителя регулярных выражений (т. е. //
) для вашего регулярного выражения. Используйте следующую команду и проверьте, как добавляется разделитель.
{$SelectHomePageLayout|regex_replace:'/[^0-9]+/':''}
^ ^