Search code examples
androidsqliteupdatesfeed

Create news application android with updates


I'm trying to make an android application which displays the latest news off of my web site, I’m confused specifically about these two things?

1.How exactly can I get the news from my web site every time the phone is connected to internet automatically?

2.How am i going to store this information and subsequently use it for updates on the device?

I found this code from google, am i headed in the right direction?:

    public abstract class BaseFeedParser implements FeedParser {

    // names of the XML tags
    static final String PUB_DATE = "pubDate";
    static final  String DESCRIPTION = "description";
    static final  String LINK = "link";
    static final  String TITLE = "title";
    static final  String ITEM = "item";

    final URL feedUrl;

    protected BaseFeedParser(String feedUrl){
        try {
            this.feedUrl = new URL(feedUrl);
        } catch (MalformedURLException e) {
            throw new RuntimeException(e);
        }
    }

    protected InputStream getInputStream() {
        try {
            return feedUrl.openConnection().getInputStream();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

Solution

  • The piece of code you have found is an XML parser-like approach. Basically, what it should do is to receive and parse information from your website. More about parsing XML in Android can be found here.

    Responding to your questions:

    1. You could get the news from your website through its RSS feed.

      This is not a trivial task. You should:

      • Make a HTTP request with the RSS link to your website to obtain the XML feed as an input stream. You can achieve this with HttpURLConnection class. More details here. Make sure to add the <uses-permission android:name="android.permission.INTERNET" /> permission to the AndroidManifest.xml

      • After you have the XML, parse it with your feed parser and obtain a list of RssItems. An RssItem could look like this:

        public class RSSItem {
        
            private String title;
            private String description;
            private String category;
            private String pubdate;
            private String link;
        
           //Getters and setters here
        }
        
      • Now you should have a List<RssItem> and display the items in a ListView.
    2. You can store the bunch of RSSItem in a SQLite Database. Your database could have just one table with 5 item properties (title, description, etc) as columns + one column for an id. More on databases here.

    Regarding every time the phone is connected to internet automatically:

    From a user perspective I would not prefer a RSS news app to constantly fetch for the feed every time the phone connects to the Internet. That is because of performance issues (battery drain, data traffic). What if the phone is always connected to the Internet, it won't fetch anything during this time?

    Instead, I would like this kind of app to have a refresh mechanism in order to fetch the news when I want (maybe implement a button).