/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠL uke ĠK linker Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġxyz . heart . sms . shared . util . xml Ċ Ċ import Ġandroid . content . Context Ċ Ċ import Ġorg . xml pull . v 1 . Xml Pull Parser Ċ import Ġorg . xml pull . v 1 . Xml Pull Parser Exception Ċ Ċ import Ġjava . io . IOException Ċ import Ġjava . util . ArrayList Ċ Ċ import Ġxyz . heart . sms . shared . R Ċ Ċ /** Ċ Ġ* ĠHelper Ġfor Ġparsing Ġthe Ġopen _ source . xml Ġresource Ġinto Ġa Ġusable Ġarray Ġof Ġstrings Ġthat Ġcan Ċ Ġ* Ġbe Ġdisplayed Ġin Ġan Ġadapter . Ċ Ġ*/ Ċ object ĠOpen Source Parser Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġns : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠParses Ġthe Ġopen _ source . xml Ġfile Ġand Ġreturns Ġa Ġstring Ġarray Ġof Ġeach Ġitem . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext Ġthe Ġcurrent Ġapplication Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ return Ġan Ġarray Ġof Ġstrings Ġfor Ġformatting Ġand Ġdisplaying . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġparse ( context : ĠContext ): ĠArray < String >? Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= Ġcontext . resources . get Xml ( R . xml . open _ source ) ĊĠĠĠĠĠĠĠ Ġparser . next () ĊĠĠĠĠĠĠĠ Ġparser . next Tag () ĊĠĠĠĠĠĠĠ Ġread Change log ( parser ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Xml Pull Parser Exception :: class , ĠIOException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġread Change log ( parser : ĠXml Pull Parser ): ĠArray < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= ĠArrayList < String >() ĊĊĠĠĠĠĠĠĠ Ġparser . require ( Xml Pull Parser . START _ TAG , Ġns , Ġ" open _ source ") ĊĠĠĠĠĠĠĠ Ġwhile Ġ( parser . next () Ġ!= ĠXml Pull Parser . END _ TAG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġparser . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(" item " Ġ== Ġname ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( read Version ( parser )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġitems . to Typed Array () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Xml Pull Parser Exception :: class , ĠIOException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġread Version ( parser : ĠXml Pull Parser ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġversion Info Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġparser . require ( Xml Pull Parser . START _ TAG , Ġns , Ġ" item ") ĊĠĠĠĠĠĠĠ Ġversion Info . append ( read VersionNumber ( parser )) ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( parser . next () Ġ!= ĠXml Pull Parser . END _ TAG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġparser . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(" license " Ġ== Ġname ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Info . append ( read Version Text ( parser )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġversion Info . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Xml Pull Parser Exception :: class , ĠIOException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġread VersionNumber ( parser : ĠXml Pull Parser ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġparser . require ( Xml Pull Parser . START _ TAG , Ġns , Ġ" item ") ĊĠĠĠĠĠĠĠ Ġvar Ġname Ġ= Ġparser . getAttribute Value ( null , Ġ" name ") ĊĠĠĠĠĠĠĠ Ġval Ġowner Ġ= Ġparser . getAttribute Value ( null , Ġ" owner ") ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ"< b >< u >$ name :</ b ></ u >" ĊĠĠĠĠĠĠĠ Ġif Ġ( owner Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ+= Ġ" Ġ" Ġ+ Ġowner ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġname Ġ+= Ġ"< br />< br /> " ĊĠĠĠĠĠĠĠ Ġreturn Ġname ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Xml Pull Parser Exception :: class , ĠIOException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġread Version Text ( parser : ĠXml Pull Parser ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġparser . require ( Xml Pull Parser . START _ TAG , Ġns , Ġ" license ") ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġread Text ( parser ). replace (" ĠĠĠ Ġ", Ġ""). trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ} ĊĠĠĠĠĠĠĠ Ġparser . require ( Xml Pull Parser . END _ TAG , Ġns , Ġ" license ") ĊĠĠĠĠĠĠĠ Ġreturn Ġtext ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Xml Pull Parser Exception :: class , ĠIOException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġread Text ( parser : ĠXml Pull Parser ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġif Ġ( parser . next () Ġ== ĠXml Pull Parser . TEXT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġparser . text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparser . next Tag () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ }