package Ġcom . prt 2 1 2 1 . contact Ċ Ċ import Ġandroid . content . Content Resolver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . provider . Contacts Contract Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġkotlin s lang . control . None Ċ import Ġkotlin s lang . control . Option Ċ import Ġkotlin s lang . control . to Option Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġpt 2 1 2 1 Ġon Ġ 1 / 2 9 / 1 6 . Ċ Ġ*/ Ċ object ĠUtils Ġ{ ĊĠ Ġfun Ġfind Contact ( context : ĠContext , Ġcontent Resolver : ĠContent Resolver , ĠresultCode : ĠInt , Ġdata : ĠIntent ?): ĠOption < Contact > Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( result Code Ġ== ĠAppCompatActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠ Ġval Ġuri Ġ= Ġdata ?. data ĊĠĠĠĠĠ Ġval Ġcursor Ġ= Ġcontent Resolver . query ( uri , Ġnull , Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠ Ġcursor . moveTo First () ĊĠĠĠĠĠ Ġval Ġcontact Id Index Ġ= Ġcursor . getColumnIndex ( Contacts Contract . Contacts ._ ID ) ĊĠĠĠĠĠ Ġval Ġname Index Ġ= Ġcursor . getColumnIndex ( Contacts Contract . Contacts . DISPLAY _ NAME ) ĊĠĠĠĠĠ Ġval Ġphoto Url Index Ġ= Ġcursor . getColumnIndex ( Contacts Contract . Contacts . PH OTO _ URI ) ĊĠĠĠĠĠ Ġval Ġhas PhoneNumber Index Ġ= Ġcursor . getColumnIndex ( Contacts Contract . Contacts . HAS _ PHONE _ NUMBER ) ĊĠĠĠĠĠ Ġif Ġ( cursor . getInt ( has PhoneNumber Index ) Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġcursor . getLong ( contact Id Index ) ĊĠĠĠĠĠĠĠ Ġval Ġu Ġ= Ġcursor . getString ( photoUrl Index ). to Option (). map Ġ{ ĠUri . parse ( it ) Ġ} ĊĠĠĠĠĠĠĠ ĠContact ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getString ( name Index ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind PhoneNumber ( context , Ġid )). to Option () ĊĠĠĠĠĠ Ġ} Ġelse ĠNone ĊĠĠĠ Ġ} Ġelse ĠNone ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġfind PhoneNumber ( context : ĠContext , Ġcontact Id : ĠLong ): ĠOption < String > Ġ{ ĊĠĠĠ Ġval Ġph ones Ġ= Ġcontext . content Resolver . query ( ĊĠĠĠĠĠĠĠ ĠContact s Contract . Common Data Kinds . Phone . CONTENT _ URI , ĊĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠ ĠContact s Contract . Common Data Kinds . Phone . CONTACT _ ID Ġ+ Ġ" Ġ= Ġ" Ġ+ Ġcontact Id , ĊĠĠĠĠĠĠĠ Ġnull , Ġnull ) ĊĠĠĠ Ġval ĠphoneNumber Ġ= Ġif Ġ( phones . moveTo Next ()) Ġ{ ĊĠĠĠĠĠ Ġph ones . getString ( ĊĠĠĠĠĠĠĠĠĠ Ġph ones . getColumnIndex ( Contacts Contract . Common Data Kinds . Phone . NUMBER ) ĊĠĠĠĠĠ Ġ). to Option () ĊĠĠĠ Ġ} Ġelse ĠNone ĊĠĠĠ Ġph ones . close () ĊĠĠĠ Ġreturn ĠphoneNumber ĊĠ Ġ} Ċ }