package Ġml . pe w rieb ont al . encode image . async Ċ Ċ import Ġandroid . content . Content Resolver Ċ import Ġandroid . net . Uri Ċ import Ġml . pe w rieb ont al . encode image . models . Conversation Ċ import Ġml . pe w rieb ont al . encode image . models . Message Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . Callable Ċ Ċ class ĠRead Sms Task ( private Ġval Ġcontent Resolver : ĠContent Resolver ) Ġ: ĠCallable < ArrayList < Conversation >> Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcall (): ĠArrayList < Conversation > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessages Ġ= ĠArrayList < Message >() ĊĠĠĠĠĠĠĠ Ġval Ġconversations Ġ= ĠArrayList < Conversation >() ĊĠĠĠĠĠĠĠ Ġval Ġsms Uri Ġ= ĠUri . parse (" content :// sms /") ĊĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġcontent Resolver . query ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsms Uri , ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"_ id ", Ġ" thread _ id ", Ġ" address ", Ġ" date ", Ġ" body ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġnull , Ġnull , Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ( cursor !!. count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠMessage ( cursor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessages . add ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠĠĠĠĠ Ġval Ġaddress List Ġ= ĠArrayList < String ?> () ĊĠĠĠĠĠĠĠ Ġfor Ġ( message Ġin Ġmessages ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= Ġmessage . address ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! address List . contains ( address )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddress List . add ( address ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconversation Ġ= ĠCon versation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddress , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . body , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . date ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconversations . add ( conversation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġaddress List . indexOf ( address ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconversation Ġ= Ġconversations [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconversation . addMessage ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconversations [ index ] Ġ= Ġconversation ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġconversations ĊĠĠĠ Ġ} Ċ }