package Ġbr . uf pe . cin . if 7 1 0 . rss Ċ Ċ import Ġandroid . app . Intent Service Ċ import Ġandroid . content . Intent Ċ import Ġandroid . preference . Preference Manager Ċ import Ġbr . uf pe . cin . if 7 1 0 . rss . db . SQLite RSS Helper Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjava . io . IOException Ċ import Ġjava . io . InputStream Ċ import Ġjava . net . Http URLConnection Ċ import Ġjava . net . URL Ċ import Ġjava . nio . charset . Charset Ċ Ċ class ĠRSS Service Ġ: ĠIntent Service ( RSS Service :: class . simple Name ) Ġ{ ĊĊĠĠĠ Ġ// bus ca Ġa Ġrefer encia Ġdefin ida Ġnas Ġprefer encias ĊĠĠĠ Ġoverride Ġfun Ġon Handle Intent ( p 0 : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġr ss feed Ġ= Ġprefs . getString (" rss feed ", Ġ"< unset >") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( rss feed Ġ= ="< unset >") Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġfeed XML Ġ= Ġget R ss Feed ( rss feed ) ĊĠĠĠĠĠĠĠ Ġval Ġfeed RSS Ġ= ĠParser RSS . parse ( feed XML ) ĊĠĠĠĠĠĠĠ Ġval Ġhas New Entries Ġ= Ġupdate DB ( feed RSS ) ĊĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġintent . action Ġ= Ġ" update Feed " ĊĠĠĠĠĠĠĠ Ġintent . putExtra (" Has New Entries ", Ġhas New Entries ) ĊĠĠĠĠĠĠĠ Ġsend Broadcast ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġget R ss Feed ( feed : String ): String Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġinput : ĠInputStream ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġr ss Feed Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠ Ġ// requis ita Ġcont e udo Ġdo Ġlink ĊĠĠĠĠĠĠĠ Ġtry ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠURL ( feed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconn Ġ= Ġurl . open Connection () Ġas ĠHttp URLConnection ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Ġ= Ġconn . getInputStream () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteArray ( 1 0 2 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcount : Int Ġ= Ġinput . read ( buffer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( count Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . write ( buffer , Ġ 0 , Ġcount ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ= Ġinput . read ( buffer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġout . toByteArray () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcharset : ĠCharset Ġ= ĠChar sets . UTF _ 8 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġr ss Feed Ġ= ĠString ( response , Ġcharset ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( input Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġr ss Feed ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// se Ġencontr ar Ġcont e udo , Ġatual iza Ġo Ġbanco ĊĠĠĠ Ġfun Ġupdate DB ( feed RSS : List < Item RSS >): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġhas New Entries Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġdb Handler Ġ= ĠSQLite RSS Helper ( this ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġfeed RSS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhas Inserted Ġ= Ġdb Handler . insert Item ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas New Entries Ġ= Ġhas New Entries Ġ|| Ġ( has Inserted Ġ== Ġ 1 . 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġhas New Entries ĊĠĠĠ Ġ} Ċ Ċ } Ċ