Rss reader android как добавить

Обновлено: 07.07.2024

Пошаговое руководство по созданию RSS-клиента на Android. Статья для начинающих разработчиков.
Android – операционная система для мобильных устройств от Google.
Система очень перспективная и динамично развивается. Базовые навыки разработки будут совсем не лишними.
Осторожно много скриншотов!

1. Начало

Вначале нужно зайти на официальный сайт и ознакомиться с возможностями последней версии Android 2.2. На сайте есть специальный раздел для разработчиков. Тут можно скачать все необходимые инструменты, найти инструкцию по установке, инструкцию по созданию первого приложения и справку по пакетам и классам библиотеки.

2. Установка SDK

На компьютере должен быть установлен JDK версии 5 или 6. Для разработки под Android нужно скачать и установить Android SDK, в котором есть эмулятор Android. Далее нужно установить Eclipse версии 3.4 или 3.5. И последнее, нужно установить плагин ADT для Eclipse.

3. Создание RSS-клиента

За основу я взял статью Creating Rss Reader in Android. Но в статье есть ошибки, и получить рабочей приложение сразу не получится. По моей просьбе, автор выложил полный рабочий проект. Но пока шла переписка, я сам исправил ошибки и написал свою версию программы.

3.1. Создание проекта
Запускаем Eclipse, выбираем меню File->New->Project. Запускается диалог New Project, выбираем папку Android и проект Android Project, жмем Next.

image

Открывается окно New Android Project. Заполняем поле Project name: uRSS, Выбираем в таблице Build Target строку Android 2.2. Дальше нужно заполнить свойства проекта в разделе Properties.

Жмем Next и в следующем окне ничего не меняем и жмем Finish.

image

image

Все проект создан.

Для начала зададим содержимое главного окна в файле res/layout/main.xml. Главное окно будет построено на основе контейнера LinearLayout. Оно содержит надпись TextView, поле для ввода текста EditText, кнопку Button и список ListView. Обратите внимание, что у каждого элемента есть android:id. Это идентификатор по которому с элементом интерфейса можно связаться из кода.

<? xml version ="1.0" encoding ="utf-8" ? >
< LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android"
android:orientation ="vertical"
android:layout_width ="fill_parent"
android:layout_height ="fill_parent"
>

< TextView
android:id ="@+id/label"
android:layout_width ="fill_parent"
android:layout_height ="wrap_content"
android:text ="Enter RSS URL:"
/>

< EditText
android:id ="@+id/rssURL"
android:layout_width ="fill_parent"
android:layout_height ="wrap_content"
android:background ="@android:drawable/editbox_background"
android:text ="http://feeds.feedburner.com/MicrosoftUserGroupVinnitsya"
/>

< Button
android:id ="@+id/fetchRss"
android:layout_width ="wrap_content"
android:layout_height ="wrap_content"
android:layout_marginRight ="10dip"
android:text ="Fetch Rss" />

< ListView
android:id ="@+id/rssListView"
android:layout_width ="fill_parent"
android:layout_height ="wrap_content" />

</ LinearLayout >

* This source code was highlighted with Source Code Highlighter .

Для элемента списка нужно задать содержимое. Для этого создайте файл res/layout/list_item.xml.

<? xml version ="1.0" encoding ="utf-8" ? >
< TextView
xmlns:android ="http://schemas.android.com/apk/res/android"
android:layout_width ="fill_parent"
android:layout_height ="fill_parent"
android:padding ="10dp"
android:textSize ="13sp"
android:autoLink ="all" >
</ TextView >

* This source code was highlighted with Source Code Highlighter .

При нажатии на элемент списка, новость должна открыться в новом окне. Создадим файл res/layout/rss_item_displayer.xml для этого окна.

<? xml version ="1.0" encoding ="utf-8" ? >
< LinearLayout
xmlns:android ="http://schemas.android.com/apk/res/android"
android:layout_width ="fill_parent"
android:layout_height ="fill_parent"
android:orientation ="vertical"
>

< TextView
android:id ="@+id/titleTextView"
android:text ="Title:"
android:layout_width ="fill_parent"
android:layout_height ="wrap_content"
android:padding ="10dp"
android:textSize ="13sp"
android:autoLink ="all"
/>

< TextView
android:id ="@+id/contentTextView"
android:text ="Content:"
android:layout_width ="fill_parent"
android:layout_height ="wrap_content"
android:textSize ="13sp"
android:autoLink ="all"
/>

</ LinearLayout >

* This source code was highlighted with Source Code Highlighter .

public class RssItem

private String title;
private String description;
private Date pubDate;
private String link;

public RssItem( String title, String description, Date pubDate, String link) this .title = title;
this .description = description;
this .pubDate = pubDate;
this .link = link;
>

public String getTitle()
return this .title;
>

public String getLink()
return this .link;
>

public String getDescription()
return this .description;
>

public Date getPubDate()
return this .pubDate;
>

@Override
public String toString()

SimpleDateFormat sdf = new SimpleDateFormat( "MM/dd - hh:mm:ss" );

String result = getTitle() + " ( " + sdf.format( this .getPubDate()) + " )" ;
return result;
>

public static ArrayList <RssItem> getRssItems( String feedUrl)

ArrayList <RssItem> rssItems = new ArrayList <RssItem>();

RssItem rssItemT = new RssItem( "MSUG news" , "Best IT news." ,
new Date(), "http://msug.vn.ua/" );

//DocumentBuilderFactory, DocumentBuilder are used for
//xml parsing
DocumentBuilderFactory dbf = DocumentBuilderFactory
.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();

//using db (Document Builder) parse xml data and assign
//it to Element
Document document = db.parse( is );
Element element = document.getDocumentElement();

//take rss nodes to NodeList
NodeList nodeList = element.getElementsByTagName( "item" );

if (nodeList.getLength() > 0) for ( int i = 0; i < nodeList.getLength(); i++)

//take each entry (corresponds to <item></item> tags in
//xml data

Element entry = (Element) nodeList.item(i);

Element _titleE = (Element) entry.getElementsByTagName(
"title" ).item(0);
Element _descriptionE = (Element) entry
.getElementsByTagName( "description" ).item(0);
Element _pubDateE = (Element) entry
.getElementsByTagName( "pubDate" ).item(0);
Element _linkE = (Element) entry.getElementsByTagName(
"link" ).item(0);

String _title = _titleE.getFirstChild().getNodeValue();
String _description = _descriptionE.getFirstChild().getNodeValue();
Date _pubDate = new Date(_pubDateE.getFirstChild().getNodeValue());
String _link = _linkE.getFirstChild().getNodeValue();

//create RssItemObject and add it to the ArrayList
RssItem rssItem = new RssItem(_title, _description,
_pubDate, _link);

>
> catch (Exception e) e.printStackTrace();
>

>

* This source code was highlighted with Source Code Highlighter .

RssItem selectedRssItem = RSSactivity.selectedRssItem;
//Bundle extras = getIntent().getExtras();
TextView titleTv = (TextView)findViewById(R.id.titleTextView);
TextView contentTv = (TextView)findViewById(R.id.contentTextView);

String title = "" ;
SimpleDateFormat sdf = new SimpleDateFormat( "MM/dd - hh:mm:ss" );
title = "\n" + selectedRssItem.getTitle() + " ( "
+ sdf.format(selectedRssItem.getPubDate()) + " )\n\n" ;

String content = "" ;
content += selectedRssItem.getDescription() + "\n"
+ selectedRssItem.getLink();

titleTv.setText(title);
contentTv.setText(content);
>
>

* This source code was highlighted with Source Code Highlighter .

public class RSSactivity extends Activity

public static RssItem selectedRssItem = null ;
String feedUrl = "" ;
ListView rssListView = null ;
ArrayList <RssItem> rssItems = new ArrayList <RssItem>();
ArrayAdapter<RssItem> aa = null ;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// get textview from our layout.xml
final TextView rssURLTV = (TextView) findViewById(R.id.rssURL);

// get button from layout.xml
Button fetchRss = (Button) findViewById(R.id.fetchRss);

// define the action that will be executed when the button is clicked.
fetchRss.setOnClickListener( new View.OnClickListener()

//@Override
public void onClick(View v) feedUrl = rssURLTV.getText().toString();
//TextView TVtitle=(TextView)findViewById(R.id.label);
//CharSequence cs="fetching";
//TVtitle.setText(cs);
aa.notifyDataSetChanged();
refressRssList();
//cs="Feed:";
//TVtitle.setText(cs);
>
>);

// get the listview from layout.xml
rssListView = (ListView) findViewById(R.id.rssListView);
// here we specify what to execute when individual list items clicked
rssListView.setOnItemClickListener( new AdapterView.OnItemClickListener()

//@Override
public void onItemClick(AdapterView<?> av, View view, int index,
long arg3) selectedRssItem = rssItems. get (index);

// we call the other activity that shows a single rss item in
// one page
Intent intent = new Intent(
"rembo.network.urss.displayRssItem" );
startActivity(intent);
>
>);

//adapters are used to populate list. they take a collection,
//a view (in our example R.layout.list_item
aa = new ArrayAdapter<RssItem>( this , R.layout.list_item, rssItems);
//here we bind array adapter to the list
rssListView.setAdapter(aa);
feedUrl = rssURLTV.getText().toString();
refressRssList();
>

private void refressRssList()

ArrayList <RssItem> newItems = RssItem.getRssItems(feedUrl);

//TextView TVtitle=(TextView)findViewById(R.id.label);
//CharSequence cs="0";
//if(newItems.size()>0) cs="is 1";
//if(newItems.size()>5) cs="is 5";
///TVtitle.setText(cs);

>

* This source code was highlighted with Source Code Highlighter .

Остался последний штрих. Нужно связать интерфейс и код в файле AndroidManifest.xml и разрешить приложению выход в Интернет.

<? xml version ="1.0" encoding ="utf-8" ? >
< manifest xmlns:android ="http://schemas.android.com/apk/res/android"
package ="rembo.network.urss"
android:versionCode ="1"
android:versionName ="1.0" >
< application android:icon ="@drawable/icon" android:label ="@string/app_name" >
< activity android:name =".RSSactivity"
android:label ="@string/app_name" >
< intent-filter >
< action android:name ="android.intent.action.MAIN" />

< category android:name ="android.intent.category.LAUNCHER" />

</ intent-filter >
</ activity >
< activity android:name =".RssItemDisplayer" android:label ="Display Rss Item" >
< intent-filter >
< action android:name ="rembo.network.urss.displayRssItem" />

< category android:name ="android.intent.category.DEFAULT" ></ category >
</ intent-filter >
</ activity >


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

</ manifest >

* This source code was highlighted with Source Code Highlighter .

3.3. Запуск
Пора запускать наше приложение. Но вначале нужно создать виртуальную машину. Для этого в Eclipse переходим в меню Window->Android SDK and AVD Manager.

image

Жмем New и выбираем свойства виртуальной машины. В разделе Hardware обязательно нужно добавить GSM modem, поддержку Touchscreeen, Device ram size и Max VM application heap size (при такой конфигурации устройство удачно подключается к Интернету). Жмем Create AVD (тут придется немного подождать).

image

Жмем кнопку старт и запускаем виртуальную машину. Тут нужно запастись терпением. Ждать придется минут 10-20, пока машина не загрузится. Убедитесь, что виртуальное устройство подключено к Интернету. Если нет, то попробуйте перегрузиться или создать новую машину.

image

image

image

image

После запуска виртуальной машины переходим в Eclipse и запускаем приложение (жмем Run). Снова придется подождать минут 5, пока приложение установится на виртуальную машину и запустится. Если приложение не запускается, то попробуйте выключить виртуальную машину и запустить приложение (тут уже придется долго ждать, пока виртуальная машина стартует снова).

RSS Reader
версия: 1.7.9

Последнее обновление программы в шапке: 28.08.2019

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Краткое описание:
Чтение RSS-лент, поддержка импорта из OPML, автоматическое обновление лент, уведомления о появлении новостей.

Описание:
Программка для чтения RSS-лент с простеньким интерфейсом. Писал для себя, решил поделиться.

Возможности:
- Импорт/экспорт лент из OPML (файл должен быть либо *.opml, либо *.xml)
- Поиск всех RSS-лент по заданному URL
- Автоматическое обновление лент
- Возможность загрузки картинок в кэш для оффлайн-доступа (настраивается)
- Уведомления об успешной синхронизации (настраиваемые)
- Прокрутка новостей свайпами влево/вправо.
- Прокрутка новостей клавишами громкости (настраивается)
- Возможность поделиться новостью (facebook, email, twitter, . )
- Автоматическая очистка прочитанных/непрочитанных новостей
- Возможность загрузки полного текста новостей
- Светлая или темная тема
- Группировка лент по категориям (начиная с 1.1.8 включается в настройках)

Русский интерфейс: Да
Требуется Android: 4.0.3 и выше


Если кто-нибудь может помочь с переводом приложения на другие языки, пишите в личку

Pro версия позволяет отключить рекламу в приложении, а также делает доступным большой виджет. Ссылку на нее можете найти в настройках приложения.
Pro версия в Play Маркете

Если вы ищете замену Google Reader или Digg Reader, ознакомьтесь со следующими 9 приложениями для чтения RSS, которые будут держать вас в курсе происходящего в веб-мире, причём абсолютно бесплатно.

Feedly (Web, iOS, Android)

Если порасспрашивать людей о том, как они следят за обновлениями на сайтах, то в числе первых приложений наверняка окажется Feedly. И нетрудно понять почему: простой и понятный интерфейс Feedly — отличное решение как для обычных читателей, которые просто хотят видеть все интересующие их сайты в одном месте, так и для опытных пользователей, которые хотят воспользоваться всеми функциями RSS-приложений.


All-In-One Person Константин Докучаев


Но Feedly способен на большее, чем просто отслеживание и агрегирование контента. Перейдите на план Pro, чтобы искать свои каналы, получать Google-оповещения по ключевым словам, добавлять примечания к контенту и выделять важные отрывки. Pro-версия — отличный вариант для профессионалов, которые хотят использовать своё RSS-приложение в качестве исследовательского центра.

А если вы хотите делиться своими RSS-каналами с другими пользователями, делать это вам позволит план Teams. Делитесь лентами, досками, заметками и основными моментами с другими членами вашей команды, чтобы вы могли эффективно сотрудничать, проводя интересные исследования и обмениваясь идеями.

Цена Feedly: тарифный план Basic, который позволяет отслеживать до 100 источников и использовать веб-, Android- и iOS-приложения, — бесплатно; от 64,92$ в год за тарифный план Pro, который включает неограниченное количество источников и категорий, поиск и сторонние интеграции (включая Zapier).

NewsBlur (Web, Self-Hosted Web, iOS, Android)

С помощью бесплатной учётной записи NewsBlur вы можете подписаться на 64 различных канала, читать полнотекстовое содержимое сайтов в веб-ридере, сохранять истории, чтобы прочитать их позже. И вам даже не нужно делать много кликов — статьи отображаются одна за другой.


NewsBlur также позволяет вам делиться своими любимыми историями в социальных сетях или внутри NewsBlur. Вы можете добавлять в свой личный «блог» статьи, которые вы читаете и которые вам нравятся, или находить людей со схожими интересами и следить за их «блогами». Вы даже можете бесплатно запустить NewsBlur на своём сервере.

Цена NewsBlur: бесплатно для подписки на 64 сайта; 36$ в год за Premium-аккаунт, который включает неограниченное количество подписок, функции поиска и частного обмена; бесплатный открытый исходный код для запуска приложения на собственном сервере.

Inoreader (Web, iOS, Android, Windows Phone)


И хотя большинство приложений RSS кэшируют контент только на короткий срок, Inoreader не имеет архивов с ограничением по времени. Ваш контент (даже то, что вы уже прочитали) хранится постоянно. Вы можете организовать отобранные материалы, группируя свои каналы в папки и используя теги для разделения отдельных статей по мере их прочтения.

Всё это делает Inoreader отличным инструментом для опытных пользователей. Но он подходит и для начинающих. После регистрации вам будет предложено пройти обучение, и вы узнаете, как использовать основные функции приложения. Это упростит работу с ним, даже если вам раньше не приходилось иметь дело с RSS.

Если вы перейдёте на один из премиальных планов Inoreader, вы получите ещё больше возможностей. Добавляйте каналы для профилей Twitter и Google+, просто введя имя пользователя, за которым вы хотите следить, пишите расширенные правила сортировки контента по папкам и тегам, настраивайте свою панель инструментов, чтобы видеть только интересующие вас материалы, когда вы входите в систему.

Цена Inoreader: бесплатно за версию с функцией поиска и отсутствием ограничений на количество подписок (с рекламой); от 14,99$ в год за тарифный план Starter (для просмотра страницы требуется логин), обеспечивающий чтение без рекламы, настраиваемую панель управления и настраиваемые правила.

The Old Reader (Web)

Если вам и вашим друзьям нравится один и тот же тип контента, The Old Reader позволит вам делиться своими рекомендациями друг с другом. Просто подключите свою учётную запись Facebook или Google, подпишитесь на друзей, у которых тоже есть учётные записи, и The Old Reader покажет вам рекомендованный ими контент.


Это отличный способ открывать для себя новые блоги, сайты и каналы, а также делиться своим избранным с другими. Если у вас нет друзей, использующих данное приложение, вы можете заглянуть во вкладку «Тренды», чтобы увидеть рекомендации от других пользователей в виде лайков под понравившимися им статьями.

Netvibes (Web)

Как и все другие инструменты в этом списке, Netvibes позволяет следить за интересующим вас контентом в сети. И хотя Netvibes хорош уже как традиционный RSS-ридер, с инструментом Potions он становится и вовсе восхитительным.


Таким образом, Netvibes — это действительно мощный инструмент мониторинга для маркетологов, которые хотят отслеживать свои бренды и в то же время быть в курсе изменений в отрасли и важного контента.

Цена Netvibes: бесплатно для тарифного плана Basic, который включает до пяти Potions; от 24$ в год (с ежемесячной оплатой) для VIP-плана, который включает неограниченное количество Potions.

FlowReader (Web)

Если вам нужен простой способ отслеживать новые публикации в Twitter, YouTube, Reddit и Pinterest, то FlowReader будет отличным вариантом для вас. Подпишитесь на любое количество блогов и просматривайте заголовки постов в обратном хронологическом порядке, открывая по ходу просмотра только те, которые привлекают ваше внимание.


Цена FlowReader: бесплатно.

Feedreader (Web)

Если всё, что вам действительно нужно, — это лишённое излишеств место, где можно было бы отслеживать и собирать интересующий вас контент, Feedreader — это инструмент для вас. Это базовая веб-программа для чтения RSS без рекламы, позволяющая подписываться на каналы, просматривать контент в двух представлениях (развёрнутом или свёрнутом) и отмечать интересующие вас элементы, чтобы просмотреть их позже.


В дополнение к своим стандартным функциям Feedreader предлагает ещё несколько вариантов для тех, кто ждёт от RSS-приложения простоты и удобства работы. Речь идёт о сортировке подписок по категориям, а также об использовании сочетания клавиш для навигации, разворачивания и сворачивания статей, обновления страницы и пометки элементов.

Цена Feedreader: бесплатно.

Feeder (Web, Chrome, Firefox, Safari, Yandex, iOS, Android)

Веб-приложение Feeder не сильно отличается от любого другого приложения из этого списка. Как и все традиционные RSS-ридеры, Feeder позволяет подписываться на сайты и просматривать публикуемые на них материалы в обратном хронологическом порядке. Feeder — приложение не только браузерное, но и мобильное, а значит, вы в любой момент и в любом месте сможете получить доступ к вашей ленте.


Использование Feeder-расширений для браузеров Chrome, Firefox, Safari или Yandex — это, пожалуй, самый простой способ читать новостные ленты. Особенно популярны они среди тех, кто хочет быстро просмотреть только заголовки. Просто щёлкните на значок RSS, чтобы увидеть недавно опубликованные заголовки. Вы можете быстро пролистать последние обновления, читая лишь те статьи, которые вас заинтересовали.

В мобильном приложении для iOS и Android вы получите не только заголовки, но и упрощённые представления полных статей. Это отличный способ всегда оставаться в курсе того, что происходит, даже если вы находитесь вдали от дома.

Цена Feeder: бесплатно за тарифный план Feeder Basic, который включает доступ ко всем приложениям Feeder; от 59,88$ в год (оплата ежемесячно) за план Feeder Pro без рекламы.

Selfoss (Self-Hosted Web, iOS, Android)

Хотите разместить приложение для чтения RSS на собственном сервере? На сегодняшний день Selfoss —один из лучших вариантов для этого (наряду с уже упомянутым NewsBlur). Как и многие другие RSS-приложения, Selfoss упрощает процесс ознакомления с новым контентом на интересующих вас сайтах и имеет основные функции, которые помогут вам организовать ваши каналы.


Selfoss имеет открытый исходный код, так что вы можете скачать приложение бесплатно, изучить его код и настроить всё в соответствии с вашими потребностями. Вы можете добавлять дополнительные источники данных, создавать плагины и загружать уже готовые дополнения. А с помощью Fever API bridge инструмент может синхронизироваться с приложениями, которые были созданы для работы с неподдерживаемым сейчас RSS-ридером Fever. Чтобы начать использовать Selfoss, потребуется немного больше усилий, но это позволит вам создать программу для чтения ленты новостей, идеально соответствующую вашим потребностям.

Программирование RSS parser в Android

Если Вы читаете эту статью, то Вы вероятно знаете, что такое RSS и зачем оно используется. Если нет, посмотритездесь. С точки зрения программиста RSS лента представляет собой XML файл, который можно легко разобрать, используяXML parser. В распоряжении Android программиста находится довольно обширный набор библиотек для работы с XML

  • javax.xml.parsers.SAXParser
  • android.content.res.XmlResourceParser
  • Простой API для работы с XML (SAX) в пакете org.xml.sax
  • Android ROME Feed Reader - Google RSS ридер для Android
  • Android Feed Reader - еще один Google RSS/Atom reader
  • Android-rss - легкая библиотека для работы с RSS 2.0 лентами

Мы остановимся на первом варианте.SAXParserчасто используется при разработке Android приложений, поскольку он входит в состав Android SDK. В рамках этого небольшого урока мы создадим простое Android приложение и используем SAXParser для разбора и отображения ленты.

Создадим простое приложение, которое будет получать RSS ленту. Для программирования будем использовать Eclipse IDE.

программирование android

  1. Выберите File->New->Project и в открывшемся диалоговом окне выбираем Android Project.
  2. В следующем диалоге в качестве имени проекта вводим RSSFeed, нажимаем кнопку Next.
  3. В следующем окне нам предлагают выбрать целевую платформу. Выбираем Android 2.3, нажимаем кнопку Next.
  4. Задаем в качестве имени приложения RSSFeed, в качестве названия пакета android.rss, помечаем флажком Create Activity и меняем стоящее рядом название на RssFeed. Minimum SDK устанавливаем в 10. Нажимаем кнопку Finish.

Обратите внимание, созданный нами класс RSSFeed, наследующий Activity фактически представляет собой визуальный пользовательский интерфейс - окно. Сейчас наш проект состоит из трех файлов:RSSFeed.java cодержит исходный код класса RSSFeed, файл разметкиres/layout/main.xml, содержащий информацию о дизайне пользовательского интерфейса и Android UI компонентах; файл манифеста AndroidManifest.xml, в котором хранится основные параметры проекта (название пакета, запускаемая при старте программы деятельность (Activity класс), компоненты приложения, процессы, разрешения, минимально необходимый уровень API).

Давайте для начала настроим интерфейс нашего будущего приложения. Щелкнете два раза в дереве проекта по файлуres/layout/main.xml. В центральной части Eclipse откроется визуальный редактор. В моем случае на окне уже имеется компонент LinearLayout, у которого задана вертикальная ориентация. Под окном редактирования присутствует вкладка maix.xml, позволяющая переключиться от визуального редактора к редактору xml файла.

Android RSS парсинг

Настройка AndroidManifest.xml

Мы будем получать RSS ленту с удаленного сервера, поэтому наше приложение должно иметь соответствующие разрешения. Щелкнем в дереве проектов по файлуAndroidManifest.xml, перейдем на вкладку Permissions, нажмем на кнопку Add, выберем Uses Permission, нажмем ОК. В поле Name введемandroid.permission.INTERNET. В результате этих действий в файле AndroidManifest.xml появится строка

После этого наше приложение может работать с сокетами и получать информацию из сети. Файл AndroidManifest.xml должен иметь вид:

Вся подготовительная работа сделана, настало время заняться тем, ради чего писалась данная статья - парсингом RSS ленты. Нам понадобится импортировать следующие классы:

  • javax.xml.parsers.SAXParser
  • javax.xml.parsers.SAXParserFactory
  • org.xml.sax.InputSource
  • org.xml.sax.XMLReader
  • org.xml.sax.helpers.DefaultHandler

Вернемся в файл src\android.rss\RSSFeed.java и добавим в начало файла строки:

Внутри класса RSSFeed определим строковую переменную, куда будем загружать RSS ленту, перед заголовком метода onCreate.

Метод onCreate запускается при старте нашей программы. Сейчас этот метод содержит две строки, приводящие к отображению нашего окна на экране. Добавим в конец этого метода переменную rss, связанную со вторым элементом TextView. С помощью этой переменной мы будем отображать информацию на экране.

Метод findViewById позволяет найти элемент управления по его id (помните параметр android:id="@+id/rss", который мы задали у второго TextView, когда создавали дизайн).

Для того, чтобы программа заработала, нужно подключить еще парочку библиотек:

Файл RSS ленты представляет собой XML, содержащий совокупность элементов <item>. Каждый <item> в свою очередь содержит внутри элементы title, description, link, creator, date, названия которых говорят сами за себя.

Создаем объект XML парсера

Пользуясь статическим методом newInstance создадим объектSAXParserFactory

Создадим объект SAXParser с помощью newSAXParser:

Получим объект XMLReader от SAXParser с помощью метода getXMLReader:

Создание этих объектов требует размещение их в блоке try/catch и отработки исключительных ситуаций SAXException, ParserConfigurationException. Также нам понадобится подключить еще несколько библиотек

Обработка событий SAX2

Работа с SAXParser построена на обработке событий. При разборе XML файла SAX2 генерирует события, например, при начале и завершении следующего элемента или блока символьных данных. Для обработки событий нужно создать специальный класс-потомок DefaultHandler. Назовем его RSSHandler. Именно внутри этого класса будет происходить парсиг XML файла. Нам нужно переопределить методы startElement и characters, отвечающие за начало нового элемента и считывание блока данных. Название элемента передается в startElement через параметр localName. Если мы встретили элемент <item>, мы должны добавить значение localName в строку результатов.

В методе characters будем добавлять символьные данные в строку rssResult. Метод replaceAll будем использовать для удаления всех двойных пробелов.

Код класса приведен ниже

Да, нужно подключить библиотеку org.xml.sax.Attributes;

Вернемся к методу onCreate. Создадим объект RSSHandler и передадим его объекту XMLReader с помощью метода setContentHandler. Тем самым мы говорим XMLReader-у, что будем использовать методы RSSHandler при парсинге файла.

В данный момент мы установили связь с удаленной страницей с помощью объекта URL, для считывания потока данных требуется создать объект InputSource и открыть поток данных для чтения с помощью метода openStream():

Созданный таким образом объект мы передаем XMLReader для разбора данных

После этой команды происходит считывание и парсинг файла файла RSS ленты, в процессе которого внутри методов класса RSSHandler заполняется данными строка rssResult. Все что нам осталось, передать текст из этой строки в элемент TextView на экране.

Вот, собственно и все. Мы считали удаленный файл, провели его разбор, в процессе которого сформировали строку rssResult, а затем отобразили эту строку на экране с помощью TextView.

100-500 тысяч), так и различия, скрывающиеся за разной задумкой. Давайте рассмотрим их и сделаем соответствующие выводы.

Недорогие RTX 3060 - крипта растет, а видяхи дешевеют Слив 3060 Gigabyte Gaming - на сегодня это за копейки

Оглавление

Вступление

реклама

600x292 295 KB. Big one: 1024x500 953 KB

В роли подопытных у нас сегодня выступают три программы: Inoreader, Palabre и RSS Reader компании BGA. Они схожи примерно одинаковым рейтингом, оцененным в четыре балла, и общим количеством загрузок (

100-500 тысяч), но при этом различаются абсолютно разной задумкой. Давайте рассмотрим их и сделаем соответствующие выводы.

Кроме того, советуем обратить внимание на предыдущую статью по выбору RSS-агрегатора, в которой были рассмотрены два популярных решения – gReader и Feedly.

В качестве тестового оборудования использовались следующие устройства: смартфоны Xiaomi Redmi Note 3 Pro (OC Android 5.1, MIUI 8, процессор Snapdragon 650 64 бита, 6 х 1800 МГц, видеосопроцессор Adreno 510, 2 Гбайта ОЗУ) и Jinga Basco M500 3G (OC Android 5.1, процессор MediaTek MT6580, 4 х 1300 МГц, видеосопроцессор Mali-400 MP2, 1 Гбайт ОЗУ), планшет Samsung Galaxy Tab 2 7.0 (CM 13 на базе OC Android 6.0.1, процессор TI OMAP 4430, 2 x 1200 МГц, видеосопроцессор PowerVR 540, 384 МГц, 1 Гбайт ОЗУ).

MSI RTX 3070 сливают дешевле любой другой, это за копейки Дешевая 3070 Gigabyte Gaming - успей пока не началось

Inoreader

600x316 256 KB

Знакомство

В описании на Google Play сказано: «Inoreader – это ридер контента, построенный специально для опытных пользователей, которые хотят сэкономить время». Что ж в этом приложении такого для продвинутых пользователей? Давайте выясним это и сделаем соответствующие выводы.

Начало работы

реклама

253x449 28 KB. Big one: 720x1280 92 KB
253x449 17 KB. Big one: 720x1280 54 KB

Первый запуск приложения Inoreader меня удивил, причем в хорошем смысле данного слова. Только взгляните на стартовое меню, красота да только. Жаль, что остальные элементы интерфейса выполнены уже в другом стиле, строгом и серьезном.

253x449 52 KB. Big one: 720x1280 190 KB
253x449 105 KB. Big one: 720x1280 654 KB

253x449 43 KB. Big one: 720x1280 173 KB

Естественно, есть боковое меню, в котором размещены всевозможные категории с новостями, подписки и сохраненные страницы. И снова ничего продвинутого.

253x449 74 KB. Big one: 720x1280 440 KB
253x449 26 KB. Big one: 720x1280 103 KB

Кстати, о функциях. Среди них есть следующие опции: добавить статью в закладки, отметить непрочитанным, добавить теги, поделиться. Все.

253x449 45 KB
253x449 63 KB. Big one: 720x1280 358 KB

Интересный момент – если в конце статьи вы будете тянуть экран вверх, то материал откроется во встроенном веб-браузере, который работает достаточно быстро, плавно, а главное шустро.

253x449 180 KB. Big one: 720x1280 1043 KB

Виджет – вот он меня удивил. Приложение для опытных пользователей и тут раз – виджет 1 x 1 – индикатор количества новостей. Зачем? У меня нет комментариев…

Настройки

253x449 58 KB. Big one: 720x1280 167 KB
253x449 61 KB. Big one: 720x1280 179 KB

реклама

Параметров в программе Inoreader достаточно мало: по интерфейсу и функциям практически нет настроек, только по офлайн режиму и различным мелочам есть пара моментов.

253x449 42 KB. Big one: 720x1280 124 KB
253x449 21 KB. Big one: 720x1280 59 KB

Офлайн режим позволяет подгружать новостную ленту каждый час, чтобы потом, при отсутствии интернета, мы смогли что-нибудь почитать. Загрузка новостей через мобильную сеть может ограничиваться, после синхронизации может отображаться уведомление и так далее – имеются и другие опции.

Тестирование

реклама

В работе бесплатное приложение Inoreader меня не подвело. Вот по этой части я действительно могу отметить высокое качество приложения и адаптацию для продвинутых пользователей, которые ценят свое время и качество. Только один вопрос, на что расходуются 100 Мбайт ОЗУ?

Выводы

Inoreader – неплохой RSS-агрегатор новостей, который ничем не отличается от десятка других приложений в Google Play. Внешний вид программы обычен, а удобность использования можно оценить на четверку, как и все остальные параметры приложения. Благо хоть функция кэширования новостей есть, а рекламы нет – за это разработчикам большое спасибо!

Читайте также: