2
定期的にウェブサイトのRSSをチェックするアプリが必要です。最新の記事からSDカードに画像をダウンロードするだけです。どうすればこのことができますか?あなたに私にこのことを学ぶためのコードや場所を教えてもらえますか?Android:rssウェブサイトからのみ画像をダウンロード最新記事
定期的にウェブサイトのRSSをチェックするアプリが必要です。最新の記事からSDカードに画像をダウンロードするだけです。どうすればこのことができますか?あなたに私にこのことを学ぶためのコードや場所を教えてもらえますか?Android:rssウェブサイトからのみ画像をダウンロード最新記事
これは一人で行くのは危険です。これは、解析された項目をArrayListに追加する単純なxmlパーサーです。これらのアイテムは、後で、たとえばアダプタなどで使用できます。
このコードをフィードに合わせて変更してください。使い方は簡単です - readRss(1);
フィードの最初の項目のみを読み込みます。 SDカードに画像をダウンロードする方法について - たくさんの例があります。
private XmlPullParserFactory factory = null;
private XmlPullParser xpp = null;
private ArrayList<String> newsId;
private ArrayList<String> newsTitle;
private ArrayList<String> newsDescription;
private ArrayList<String> newsImage;
private boolean connect() {
try {
if (xpp == null) {
URL url = new URL(feedString);
URLConnection connection = url.openConnection();
HttpURLConnection httpConnection = (HttpURLConnection)connection;
int responseCode = httpConnection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
InputStream in = httpConnection.getInputStream();
factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
xpp = factory.newPullParser();
xpp.setInput(in, "UTF-8");
}
}
return true;
} catch (XmlPullParserException xe) {
Log.e("RssReader", "Connection", xe);
return false;
} catch (IOException eio) {
Log.e("RssReader", "Connection", eio);
return false;
}
}
private void readRss(int itemsToRead) {
boolean insideItem = false;
boolean insideTitle = false;
boolean insideImage = false;
boolean insideDescription = false;
boolean insideId = false;
try {
if (connect()) {
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT
&& itemsToRead >= 0) {
if (eventType == XmlPullParser.START_TAG) {
if (xpp.getName().equalsIgnoreCase("item")) { //news tag
insideItem = true;
} else if (insideItem
&& xpp.getName().equalsIgnoreCase("original")) {
insideImage = true;
} else if (insideItem
&& xpp.getName()
.equalsIgnoreCase("description")) {
insideDescription = true;
} else if (insideItem
&& xpp.getName().equalsIgnoreCase("id")) {
insideId = true;
}
} else if (eventType == XmlPullParser.END_TAG) {
if (xpp.getName().equalsIgnoreCase("item")) {
insideItem = false;
--itemsToRead;
}
} else if (eventType == XmlPullParser.TEXT && insideItem) {
if (xpp.getText() != null) {
if (insideTitle) {
newsTitle.add(xpp.getText());
insideTitle = false;
} else if (insideImage) {
newsImage.add(xpp.getText());
insideImage = false;
} else if (insideDescription) {
newsDescription.add(xpp.getText());
insideDescription = false;
} else if (insideId) {
newsId.add(xpp.getText());
insideId = false;
}
}
}
eventType = xpp.next();
}
}
} catch (XmlPullParserException e) {
Log.e("RssReader", "Connection", e);
} catch (IOException e) {
Log.e("RssReader", "Connection", e);
}
}
ここではすべての行に説明が必要だと思いますので、どこでこのコードを取得しましたか?ありがとう –