package Ġpet rov . iv an . b sc . providers Ċ Ċ import Ġandroid . content . Content Resolver Ċ import Ġandroid . content . Context Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . net . Uri Ċ import Ġandroid . provider . Contacts Contract Ċ import Ġpet rov . iv an . b sc . data . Party Ċ import Ġpet rov . iv an . b sc . data . Person Ċ Ċ class ĠContact s Provider ( val Ġcontext : ĠContext ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcontent Resolver : ĠContent Resolver Ġ= Ġcontext . content Resolver ĊĊĠĠĠ Ġfun Ġupdate Person Info ( list Party : ĠList < Party >): ĠList < Party > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcursor Phone List : ĠCursor ? Ġ= Ġcontent Resolver . query ( CONTENT _ URI , Ġnull , Ġnull , Ġnull , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġcursor Phone List ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cursor Phone List . getCount () Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( cursor Phone List . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontact Id Ġ= Ġcursor Phone List . getString ( cursor Phone List . getColumnIndex (_ ID )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontact Name Ġ= Ġcursor Phone List . getString ( cursor Phone List . getColumnIndex ( DISPLAY _ NAME )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhas PhoneNumber Ġ= ĠInteger . parseInt ( cursor Phone List . getString ( cursor Phone List . getColumnIndex ( HAS _ PHONE _ NUMBER ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠÐµÑģÐ»Ð¸ ĠÐµ ÑģÑĤÑĮ ĠÑĤ ÐµÐ» Ðµ ÑĦ Ð¾Ð½ Ð½ÑĭÐ¹ ĠÐ½ Ð¾Ð¼ ÐµÑĢ , ĠÐ¸ Ñī ÐµÐ¼ ĠÐ´ Ð¾Ð¿ Ð¾Ð»Ð½ Ð¸ÑĤÐµÐ»ÑĮ Ð½ÑĥÑİ ĠÐ¸Ð½ ÑĦÐ¾ÑĢÐ¼ Ð°ÑĨÐ¸ Ñİ ĠÐ¿Ð¾ Ġid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has PhoneNumber Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcursor Phone Info Ġ= Ġcontent Resolver . query ( Phone CONTENT _ URI , Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPhone _ CONTACT _ ID Ġ+ Ġ" Ġ= Ġ?", Ġ ĠarrayOf ( contact Id ), Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Phone Info ?. let Ġ{ Ġcursor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠphoneNumber Ġ= Ġcursor . getString ( cursor . getColumnIndex ( NUMBER )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphoto Str Ġ= Ġcursor . getString ( cursor . getColumnIndex ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPhone _ PH OTO _ URI )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphoto Uri Ġ= Ġif Ġ( photo Str Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUri . parse ( photo Str ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġupdate Ġinfo ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Party . forEach Ġ{ Ġparty Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( compare Phone ( party . inv iter . phone , ĠphoneNumber )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Person Info ( party . inv iter , Ġcontact Name , Ġphoto Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparty . listOf Invite es . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( compare Phone ( it . phone , ĠphoneNumber )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Person Info ( it , Ġcontact Name , Ġphoto Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Phone Info . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Phone List . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist Party ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcompare Phone ( first : ĠString , Ġsecond : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġformat PhoneNumber ( first ) Ġ== Ġformat PhoneNumber ( second ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġfix me : ĠÑįÑĤÐ¾ ĠÐºÐ¾Ð½ ÐµÑĩ Ð½Ð¾ ĠÐ¿ Ð»Ð¾ Ñħ Ð¾Ðµ ĠÑĢ ÐµÑĪ ÐµÐ½Ð¸Ðµ .. ĠÐ½ ÑĥÐ¶ Ð½Ð¾ ĠÐ¿ÐµÑĢ ÐµÐ´ ÐµÐ» Ð°ÑĤÑĮ ĊĠĠĠ Ġprivate Ġfun Ġformat PhoneNumber ( phone : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġphone . substring ( 1 , Ġphone . length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (" Ġ", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("- ", Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Person Info ( it : ĠPerson , Ġname : ĠString , Ġphoto Uri : ĠUri ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġit . img Uri Ġ= Ġphoto Uri ĊĠĠĠĠĠĠĠ Ġit . name Ġ= Ġname ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠCONTENT _ URI : ĠUri Ġ= ĠContact s Contract . Contacts . CONTENT _ URI ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġ_ ID Ġ= ĠContact s Contract . Contacts ._ ID ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDISPLAY _ NAME Ġ= ĠContact s Contract . Contacts . DISPLAY _ NAME ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠHAS _ PHONE _ NUMBER Ġ= ĠContact s Contract . Contacts . HAS _ PHONE _ NUMBER ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠPhone CONTENT _ URI Ġ= ĠContact s Contract . Common Data Kinds . Phone . CONTENT _ URI ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠPhone _ CONTACT _ ID Ġ= ĠContact s Contract . Common Data Kinds . Phone . CONTACT _ ID ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠPhone _ PH OTO _ URI Ġ= ĠContact s Contract . Common Data Kinds . Phone . PH OTO _ URI ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠNUMBER Ġ= ĠContact s Contract . Common Data Kinds . Phone . NUMBER ĊĠĠĠ Ġ} Ċ }